feat: add concurrency limits v2 API (phase 1)
implements basic CRUD and slot management for global concurrency limits:
- add concurrency_limit table via migration 003
- add src/db/concurrency_limits.zig with CRUD and slot operations
- add src/api/concurrency_limits_v2.zig with endpoints:
- POST /v2/concurrency_limits/ (create)
- GET /v2/concurrency_limits/{id_or_name} (read)
- PATCH /v2/concurrency_limits/{id_or_name} (update)
- DELETE /v2/concurrency_limits/{id_or_name} (delete)
- POST /v2/concurrency_limits/filter (list)
- POST /v2/concurrency_limits/increment (acquire slots)
- POST /v2/concurrency_limits/decrement (release slots)
slot management returns 423 Locked with Retry-After header when
slots cannot be acquired. matches python prefect API.
phase 2 (lease storage) and phase 4 (cleanup service) still pending.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>