Fixes 'Invalid signature in thinking block' error when switching models mid-session.
Root cause: Gemini stores thoughtSignature in metadata.google on tool call parts,
but existing strippers only checked top-level signatures. When switching to Claude
with a tool call, the foreign signature caused validation errors.
Changes:
- Add cross-model-sanitizer module for bi-directional sanitization (Gemini<->Claude)
- Integrate sanitizer into request pipeline for Claude models
- Add 42 new tests (28 unit + 14 integration)
- Add E2E test scripts for 5-model verification
Tested with: Gemini, Claude (Anthropic), Claude (Google), OpenAI, all passing.