Fix remaining bugs in net.socket + core.async abstraction

* Add block-ch to 'write' event so only one command gets processed at a
   time
* Add a process channel which puts to read-ch a hashmap that contains
  the command/args and response (so that chan can be used for pub/sub)