Review fixes across the WebRTC Direct transport:
- Propagate typed errors instead of silent fallbacks in multiaddr
conversion, dial, and listener accept paths
- Fix connection/stream cleanup on dial failure, listener close, and
late data after stream close so terminal connections cannot leak
or poison the muxer
- Enforce stream-state contracts in WebRTCMuxedStream and
WebRTCMuxedConnection (close/reset idempotency, pending-read
draining, write-after-close rejection)
- Validate UDP socket bind failures with typed socketBindFailed
Require swift-webrtc 1.4.0 (terminal-connection replacement in
listener, SACK receive-window reporting), swift-quic 1.1.4 and
swift-tls 1.2.1 (ASN1Builder.integer index-trap fix that randomly
crashed QUIC certificate generation).
Add regression tests: WebRTCUDPSocketTests (5), E2E coverage for
wrong certhash, bind failure, closed-listener stream finishing,
late data on closed stream, and unresolvable socket address (zoned
IPv6) error mapping.