Breaking changes:
- `with_relationship_hook()` renamed to `with_post_hook()`
Migration from 0.4.x:
// Before
SessionTracker::new(stream).with_relationship_hook(|entry, state| { ... })
// After
SessionTracker::new(stream).with_post_hook(|entry, state| { ... })
New features:
- `with_pre_hook()`: runs BEFORE built-in extraction, for overrides
- `with_post_hook()`: runs AFTER built-in processing (same as old hook)
- SessionState/SessionSnapshot new fields:
- caller_id_name: from Caller-Caller-ID-Name CHANNEL_DATA
- hangup_cause: from ChannelLifecycle Hangup detail
- answered_at: timestamp when "has been answered" seen