Factor out ZeroMQ socket+connect/bind handling
Return an exception instead of using an outparam
Move sources and includes into separate directories

This resolves the conflict on case-insensitive filesystems
between <zmq.h> and "ZMQ.h".  (It's now <zmq.h> and
<B/ZMQ.h>.)
Refactor B_Exception a bit

* Exceptions now have vtables, meaning an exception message
  does not need to be allocated unless the message is
  needed.

* The different types of exceptions have been factored into
* their own files.

* ExceptionErrno now preserves the errno in the exception
  itself.  This will allow users catching ExceptionErrno to
  switch on the captured errno.
Move some headers to <B/Internal/*.h>

Files in the lib/include/B/Internal directory should not be
included directly by client applications.  (The example
breaks this rule, which isn't good.)
Rename MessageListInternal.* to MessageList.*
Add request IDs to client requests and responses

This will allow a single client (as a DEALER) to make
multiple requests, permitting parallelism.
Parallelize job requests

Clients now use DEALER sockets in order to send multiple
requests at once.

There's a deadlock in workers which still needs to be
resolved.