Network failure detection, WIP
Merge branch 'master' into network_failure_detection
Merge branch 'master' into network_failure_detection
Add uncommitted spec example for B::Transport.reachable?
Fix heartbeats, allow :heartbeat => 0 to disable heartbeats again

Previously with the value of 0 we used the RabbitMQ heartbeat value.
With 3.0, it is 600 seconds. That is a fine default, however, historically
amqp gem and Bunny used the value of 0 to disable heartbeats. This commit
makes that possible again. In addition, to keep the (very reasonable)
broker default in place, we change default heartbeat value to 600, which
means w/o :heartbeat option specified, heartbeats will be used. This
helps with firewalls closing idle connections and similar matters.

On the heartbeat sender implementation side, we should send heartbeat
frames roughly at 1/2 the heartbeat interval, not the full interval,
to avoid connection closure.
Merge branch 'master' into network_failure_detection
Merge branch 'master' into network_failure_detection
Merge branch 'master' into network_failure_detection
Initial network failure recovery bits

Currently TCP and then AMQP 0.9.1 connection are recovered, then
channels. There is no queue/exchange/binding/consumer recovery yet,
this will follow amqp gem's strategy.
Ignore *.dump files
Delegate exchanges and queues to do their part of recovery
Redeclare non-predefined exchanges during automatic network failure recovery
Keep track of bindings so that we can recover them
Expose consumers
More work on queue, binding and consumer recovery

To recover consumers we will have to make sure Bunny::Consumer instance
always have a reference to their respective queue object. The reason for
that is that when a server-named queue is recovered, consumer needs to
use the new name.
Add a TODO
Implement consumer recovery

Currently consumers are assumed to use Bunny::Queue instances or client-named
queues passed as strings. Otherwise there will be no way to recalculate queue
name in the consumer. However, this should cover 99% of cases in practice.
Merge branch 'network_failure_detection'
Update change log
Trace spam