Fix visibility of classes

The factories need to be public, so that users can explicitly mandate a
particular socket type.

Also, the `ManagedSocket` and `ManagedContext` classes should probably
not be accessible.
Move ManagedSocket to c.d.dw.zmq.socket
Add accessors to BaseZeroMQSocketFactory
Provide `connect` and `bind` factory methods.

In addition to `build`, each `ZeroMQSocketFactory` now provides a `bind`
and `connect` factory method, that builds the socket and then either
connects or binds that socket to its configured `endpoints`.
Add bind() and connect() to interface.