Cosmetics
Support :routing_key and :key for HB::Queue#bind and #unbind
Implement automatic recovery of consumers

There is a couple of tricky things for consumers:

 * For non-blocking consumers, we need to recreate the executor
   it was using, because it may have exited due to an exception
   while the network was down.

   To make this possible, we need to require the user to provide
   an executor factory (any Ruby callable) because executors cannot
   be cloned or restarted.

 * To recover, consumers need to know if they use automatic
   or manual acknowledgement mode.

 * We don't try to reuse consumer tag during recovery because there
   is no way to explicitly provide it and it should not matter.