v0.8.1 — agent crash 500, sum usage across retries, per-attempt array

Three correctness fixes on v0.8.0's schema-mode path + a streaming
RunSpec regression-test backfill.

1. Agent crash returns 500, not 422.
   v0.8.0 lumped "validation exhausted" and "agent process crashed"
   into one 422. Client retry loops never terminated on real crashes.
   Now 422 means caller-side (your schema or prompt), 500 means
   server-side (agent exit code in detail).

2. Usage summed across every retry attempt.
   Every retry is its own paid LLM call. v0.8.0 reported only the
   final attempt's tokens — under-counting the provider bill.
   _accumulate_usage now sums every numeric usage key (input/output/
   total/cache_creation_*/cache_read_*/etc.) across attempts. Result
   is written back to result.usage so downstream payloads see real
   billable cost.

3. Per-attempt breakdown via response.attempts (/run) and
   aicodebox_attempts (OAI envelope vendor extension):
     [{"index": N, "usage": {...}, "exitCode": N, "parseError": "..."},
      ...]
   Callers can render "retry 2/3 cost X tokens" or bill per attempt.

4. Backfilled regression test for the v0.7.0 streaming RunSpec
   plumbing that shipped without coverage.

151 tests (137 from v0.8.0 + 14 new). README + CHANGELOG synced.

Migration: none — strict improvement. Clients with specific 422
handlers should narrow to "validation failed" and add 500 for
"agent crashed".