Fail more gracefully when we get a message on a channel that does not exist

Can be a returned message on a channel that just has been deleted, for
example, or closed due to an exception and removed from the cache.
Support :manual_ack as well as :ack
Set abort on exception for network activity thread
Separate continuations for basic.get operations

Helps support edge cases when blocking operations (e.g. basic.get) are
executed in a tight loop and network recovery has to happen.
If connection is down, make Bunny::Queues#pop return empty responses

To support the same edge case with Bunny::Queue#pop being called
in a tight loop when network connection goes down.

It is better to return something immediately rather than keep
blocking the thread we have no easy way to unblock with the
current "blocking pop" approach that replaces not-entirely-correct
wait/notify implementation.