Introduce provider-native compaction for Anthropic (claude 3.7+).
The runtime calls CompactConversation on the conversation model when
provider_opts.native_compaction is true. Anthropic returns a signed
compaction block that the SDK verifies on replay; the block is stored
in the new chat.CompactionResult on the synthetic summary message.
ReplayableCompaction enforces a strict prefix guard: if the summary
text was edited or redacted by a hook the raw block is not replayed,
preventing a desync between what the model sees and what is stored.
Session persistence and branch mechanics are updated to carry
CompactionResult through save/load/fork cycles.