ac6d8eb417
Convert all 5 mutable `var` callback fields on CallManager (onAnswerReceived, onIceCandidateReceived, onNewPeerInGroupCall, onMidCallOfferReceived, onPeerLeft) into a single `sessionEvents: SharedFlow<CallSessionEvent>`. Benefits: - Eliminates the stale-callback window between Activity destroy and recreate. No more nulling callbacks in onDestroy — the `closed` flag on CallSession is sufficient. - No mutable state shared between Activity and background code. - CallActivity no longer wires or tears down callbacks — CallSession subscribes to the flow in its init block. - Type-safe sealed interface (CallSessionEvent) replaces 5 separate lambda types. The renegotiationEvents SharedFlow remains separate because renegotiation has its own glare-resolution logic in CallSession. Updated all 11 test sites in CallManagerTest to collect from sessionEvents instead of setting callback vars. https://claude.ai/code/session_019yNnDjGKmJb19gadmojq54