- Replace terminal (failed/closed) connections in WebRTCListener.acceptConnection
so a peer can reconnect from the same address instead of hitting a dead entry
- Enforce receive()'s terminal contract: any error escaping receive() transitions
the connection to failed and finishes incomingChannels before propagating
- Add WebRTCConnectionState.isTerminal distinguishing recoverable disconnection
from failed/closed
- Advertise the actual remaining receiver window in SACKs by tracking buffered
bytes incrementally in FragmentAssembler (incomplete fragments and
out-of-order messages count against a_rwnd)