Implements plan §13.1 step 2: dual-hash dual-write during resharding.
When an index is in resharding dual-write phase (shadow exists),
every write routes to BOTH live (hash %S_old) AND shadow (hash %S_new)
indexes, each with its own _miroir_shard tag. Shadow writes are tagged
with origin="reshard_backfill" for CDC suppression (plan §13.13).
Changes:
- Add ReshardingRegistry to track active resharding operations
- Add ReshardOperationState for dual-write detection
- Add prepare_dual_write_documents() to separate live/shard batches
- Modify write_documents_impl to check resharding registry
- Add shadow index write path with origin tagging
- Add ReshardingRegistry to AppState for write path access
Tests:
- 15 ReshardingRegistry tests covering register, get, update, remove
- 4 dual_write tests for document preparation logic
Closes: miroir-uhj.1.2