Revert a previous change that returned a Boolean from the Promise returned when writing data to a channel. After some discussion, it became clear that this is a suboptimal interaction and that it would be better to either complete the Promise with null, which means success, or complete the Promise with an exception, which signals an error. This means in the ZeroMQ support an exception has to be created since it only returns true/false to indicate a success or failure on write.

Also reworked the ZeroMQ support to allow for proper shutdown of ZContext objects. Also had to introduce a delay in the tests for inproc connections since they seem to fail if a client is attempting to connect to a server too soon.