feat: Send git SHA and dirty hash to remote cache (#12427)
## Summary
- Sends `x-artifact-sha` and `x-artifact-dirty-hash` headers when
uploading cache artifacts to the remote cache server
- Reads these headers back on `fetch` and `exists` operations,
populating `CacheHitMetadata` with SCM data from remote cache hits
- Updates the mock server to store and return the new headers
- Extends the work from #12288 (local-only SCM metadata) and #12291 (run
summary) to close the loop on remote cache
## Test plan
- [x] `cargo check` passes
- [x] All existing tests pass (107 tests across `turborepo-cache` and
`turborepo-api-client`)
- [x] New `test_http_cache_scm_metadata_round_trip` test verifies
sha/dirty_hash survive a put → exists → fetch cycle through the mock
remote cache
- [x] New `test_http_cache_no_scm_metadata` test verifies graceful
handling when no SCM state is available
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Anthony Shew <anthonyshew@gmail.com>