Make logging a pluggable component of Protobuf

This refactors logging to make the logger a pluggable component of
Protobuf. The logger can be changed  by using
`::Protobuf::Logging.logger = new_logger`. Any object that complies with
the API of the ruby standard logger may be used.

All the spec's in spec/lib are passing. I had some errors in the zmq
library when trying to run the others. I also uncovered a bug that
appears when running specs with DEBUG=1. The `RequestDecoder` and the
`ResponseDecoder` referred to `env.signature` when they should have been
referring to `env.log_signature`. That is now fixed.

I used the logging in [mperham's
sidekiq](https://github.com/mperham/sidekiq) as a reference.
allow queue size to be configurable and use an array as local queue as the broker is single threaded
updating name to reflect zmq serverness
Merge pull request #210 from quixoten/logging

Make logging a pluggable component of Protobuf
Merge pull request #213 from localshred/abrandoned/zmq_queue_work

allow queue size to be configurable and use an array as local queue as t...
bump to 3.3.0
Never close $stdout
Never close old logger

There's not a great way to handle automatically closing old file
descriptors, so I'm just going to leave it out for now.
Merge pull request #214 from quixoten/logger_fix

Never close $stdout
Bump version to 3.3.1
Ensure Logger (Stdlib) is properly required

Since we're referencing Logger::INFO in the Protobuf::Logging module, we
need to ensure that Logger is properly required to avoid any load order
issues.
fix setsockopt use in specs
bump to 3.3.2
Update to MIT license
try to cut down on ping port traffic with health check interval
sweep every 5 instead of 1 and check backend before frontend and local_queue in between
shift off of local queue for ordered processing and concat instead of + for less copy
constantize the empty string
add empty to broker
let server shutdown the context when using a shared context via inproc