Changes to allow better flexibility W.R.T. choice of I/O streams

  * We now support any `IO` (or `IO`-like) streams (previously only
    socket types were allowed).

  * Separate input and output streams can be used by passing an array
    a la `[input, output]` to `MessagePasser`'s (and its subclasses')
    `new`.
(ObjectNode, Client) Toggled block-on-message-send for several calls

  * Don't block when sending "bye" messages.

  * DO block when sending method-invocations, fetches, and export-list
    requests.
(Server) Make remote-evaluation a run-time option; disabled by default
(Server, Client, MessagePasser) Some additional comments
(ObjectNode) print debug/trace info only when verbose is enabled