[content] Observability — content resolution metrics
## Problem to Solve
Content resolution introduces a new external dependency (Gitaly) into the query hot path. We need metrics to monitor latency, cache effectiveness (for Phase 2), batch sizes, and error rates.
## Proposed Solution
Add Prometheus metrics to the `ContentResolver` implementations:
**Metrics**:
- `gkg_content_resolve_duration_seconds` (histogram, labels: `outcome={cache_hit,cache_miss,gitaly_direct,error}`)
- `gkg_content_resolve_batch_size` (histogram) — distribution of batch sizes
- `gkg_content_blob_bytes` (histogram) — distribution of resolved blob sizes
- `gkg_content_resolve_total` (counter, labels: `outcome`)
- `gkg_content_gitaly_calls_total` (counter) — number of list_blobs RPCs
Phase 2 will add Valkey-specific metrics (hit/miss counters, circuit breaker state, write-back errors).
## Acceptance Criteria
- [ ] All metrics registered and emitted by GitalyDirectContentResolver
- [ ] Metrics follow existing GKG naming conventions (check `labkit-rs` patterns)
- [ ] Dashboard JSON or Grafana panel definitions (follow `helm/local/` patterns)
- [ ] Latency histogram has appropriate buckets for Gitaly call latency (1ms–5s)
issue