------------------
**NEW**
- PUSH/PULL-based kernel interaction protocol to support streaming outputs.
This enables interactive input functions and streaming outputs for long-running codes,
and also makes kernel execution more resilient to network failures.
(ZeroMQ's REQ/REP sockets break the system if any messages get dropped)