CSV export for the tools inventory: GET /api/v1/tools?format=csv

Hand the spreadsheet to finance without the JSON detour. GET /api/v1/tools accepts ?format=csv and returns a text/csv attachment with a 22-column stable layout — name, category, status, stock + threshold, assignment, checkout state, purchase data, PM cadence, scan token. Same filter surface as the JSON path: status, category, lowStock, pmOverdue all narrow the export. RFC-4180 quoting handles tool names with commas / quotes / newlines safely. 9 new tests pin the header, the boolean rendering, the null handling, and the filter pass-through to isLowStock / isPmOverdue.