First cut of the Lazy Pirate client pattern

The ZMQ client connector implements the Lazy Pirate pattern as laid out
in the [ZMQ Guide - Chapter 4][lpp]. The essence is that we attempt to
be more stable in our client requests as we assume the server may not be
available for fulfilling responses.

A connection will be created to the server and data sent with a timeout
on the socket. If the socket becomes readable inside the timeout, we
read the data and go on our way.

If the socket does not become readable in the timeout, we will close and
reopen the socket, send the data again, and again wait for a valid
response or timeout.

If we exceed the number of tries we do not attempt the connection
anymore and we fail with a timeout message to the calling code.

  [lpp]:
  http://zguide.zeromq.org/php:chapter4#Client-side-Reliability-Lazy-Pirate-Pattern
Remove overdefined zmq_context method
Add PB_CLIENT_RETRIES env var for client lpp
Synchronize zmq_error_check function to include source
Fix the benchmark rake tasks
Fix poller timeout on client zmq socket cnxns
Do not send data from zmq connector when in error
Merge branch 'master' into lazy_pirate_zmq_client
Specify server type in benchmark task
Add zmq test (failing) to test client timeouts
Make runners and servers instance based
Prevent pre-mature worker shutdown

By setting @running to true after the workers are started, it is
possible that the worker could check the servers running status before
it has been set, causing the worker to shutdown.
Merge origin/master into instantiate_runner_and...

Conflicts:
	lib/protobuf/rpc/servers/zmq/server.rb
Cleanup
Add dynamic discovery option for ZMQ server
Improve JRuby compatability and cleanup CLI
Integrate the beacon proto into the zmq server
Separate the broker concern
Track subclasses and services
Add services to the heartbeat beacon