pull each zmq.Socket into a single thread

It was becoming quite the problem that multiple goroutines would
try to use a socket at once during heavy load. Thus, now we use
chans to signal that a message needs to be sent, and a chan to
receive the result.