Disconnect the broker when it returns us certain errors

Specifically, in the cases that indicate it is probably unreachable or
something. Otherwise we never reconnect, even if it comes back up.

Fixes #133
Merge pull request #134 from Shopify/fix-133

Disconnect the broker when it returns us certain errors
More informative error when correlation ID doesn't match
Merge pull request #136 from Shopify/better-debug

More informative error when correlation ID doesn't match
Make the initial dial timeout configurable
Merge pull request #138 from Shopify/broker-dial-timeout

Make the initial dial timeout configurable
Configurable hard limit on the max size of requests

Also add a BackPressureThresholdBytes to the producer to make it behave better
in cases where we get too close to that limit.

See discussion on:
https://github.com/tylertreat/mq-benchmarking/pull/2
Merge pull request #137 from Shopify/producer-size-limit

hard limit on max size of any request sent by producer
Potential new Producer design
Add a length to the Encoder and simplify messageAggregator