Update the client ServerConnection to be able to shared zmq contexts.

To properly support inproc communication you need booth the sending
and receiving sockets to share the same zmq socket. So for this to work
Remus had to move the context storage over to the ServerConnection and
than allow that to be shared.

Change-Id: I0775b72439c679e73e938ac3f177008f41c21391
Update the worker ServerConnection to be able to shared zmq contexts.

To properly support inproc communication you need booth the sending
and receiving sockets to share the same zmq socket. So for this to work
Remus had to move the context storage over to the ServerConnection and
than allow that to be shared.

Change-Id: I0775b72439c679e73e938ac3f177008f41c21391
Allow multiple workers to share the same zmq context.

Unlike clients, workers are threaded and create zmq pair channels to talk
between the threads. This design didn't allow multiple workers to share
a context, but now we use a internal context for the zmq pair communication.

Change-Id: If67d2ed0028766db8e659914d45abf8d5e6a9d72
Update the server ServerPorts to be able to use shared zmq contexts.

This allows a server to now use inproc channels to the client and
worker, for whatever reason.

Change-Id: If4f41940481c52e2c7c726837eb5804daf7d2c2d
Merge branch 'shared_zmq_context'

Change-Id: I40526192b2b93776101c6166e9cf2030849ad2d9