An initial pass at our IronMQ Puller
Including base64 decoding and envelope building

At this current time, it feels like down stream consumers have to do
this step, providing them with the inner working of the underlying
library which probably isn’t a good idea. This has been added to this
library
Adding test coverage for the pulling subscriber

This commit also contains a  slight refactor of the pulling subscriber
passing the block differently
Re-raise exception if message processing fails

In order to provide visibility into the process, we are raising the
exception after stoping the subscription. It is on the library consumer
to handle failures in these situations
renaming  handle_envelope to proces_envelope

Its generally a bad idea to accidentally over ride methods without
knowing it
Updating test coverage to reflect method name change

the handle_envelope method has been updated to process_envelope as
handle_envelope is provided by the mixin
Faulty message logging

In an attempt to make finding faulty messages a bit easier, I am adding
logging to the library
Moving wait time up to be configurable

The number of seconds to wait on an empty queue before stopping
Edge case handling for empty messages
Better exception handling for #process_message
#process_message halting on errors
Updating start_subscription implementation

The implementation has been updated to cascade options down to
#process_message
Restoring protobuf
yeah that was way worse