Adds a convenience function for proxying messages between two MCP transports,
enabling bidirectional message forwarding with proper error handling.
Features:
- Bidirectional forwarding between client and server transports
- Optional error callback (sync or async) for exceptions on streams
- Graceful handling of closed/broken streams
- Clean shutdown on context exit
This is a simpler reimplementation of the proxy pattern from #1711/#1763,
addressing all review feedback.