Ignore repl-port
Fully asynchronous client operations using clojure IDeref

Promise has an interface: IPromise. IPromise also implements IDeref from
Clojure, so interop works nicely. Synchronous and asynchronous
transports are unified into an intersection type: DualTransport. Both
AsynchronizeTransport and SynchronizeTransport implement DualTransport.
Clients are *also* DualTransports, and have a full chain of
asynchronous operators for sending messages. There's an asynchronous
sendEventsWithAck now, which acts like a promise combinator.