server/zeromq: Move context creation in __init__

Do not use global context because it prevent you from running multiple
zeromq servers in multiple threads. Instead, create a context in
__init__ method, or allow passing an existing context with ctx argument.
server/zeromq: Add socket argument

Add socket argument so it is possible to pass an already configured
socket to the server.
server/zeromq: Add ZeroMQThreadPoolServer for async calls

Launch a worker pool in background so this is possible to fire
simultaneous blocking calls to the server.
Merge pull request #361 from trecouvr/trecouvr/zeromq_server

Enhancement propositions for ZeroMQServer