Tool depreciation: straight-line book value via ?includeBookValue=true

GET /api/v1/tools/{id}?includeBookValue=true tacks a bookValue sub-object onto the response with the straight-line depreciated estimate: purchaseCost * max(0, 1 - elapsedYears / usefulLifeYears). Defaults are 5 years for non-consumables, 1 year for consumables; pass ?usefulLifeYears=10 (or 0.25-50) to override. Future-dated purchases clamp to full purchaseCost; past-useful-life clamps to 0. Tools missing purchaseDate or purchaseCost return null bookValue so accounting consumers know to backfill instead of seeing a fake $0. New fleetToolBookValue(orgId) helper returns an org-wide rollup (totalPurchaseCost, totalBookValue, count by category, count of tools missing data) for the eventual /tools dashboard widget. 13 new tests cover the math + the rollup grouping + the RETIRED-exclusion.