Add bidirectional channel abstraction for push messages
This adds the Channel module which extends the RPC model to support:
- Push messages from server to client (one-way notifications)
- Event messages from client to server (widget interactions)
Message types:
- Request: client → server (expects response, like RPC)
- Response: server → client (matches request ID)
- Push: server → client (stdout/stderr streaming, widget updates, progress)
- Event: client → server (widget events)
Push kinds:
- Output: streaming stdout/stderr
- Widget_update: widget state changes
- Progress: task progress notifications
- Custom_push: extensible custom push types
Event kinds:
- Widget_event: user interactions (clicks, input changes)
- Custom_event: extensible custom event types
All messages use CBOR encoding for efficient binary transport.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>