Centralise all j.u.c imports and scope it under the HB namespace

* Move some java_imports of j.u.c classes that are scattered over the codebase to the hot_bunnies/juc.rb file.
* Also move the JavaConcurrent module inside of the HotBunnies module (this does not require any code changes, but makes sure we don't pollute the global namespace.
* Use include_package instead of lots of java_import, we want the full j.u.c and j.u.c.a available.
Remove Session#thread

Not sure where this was used or why it was exposed.
Use a single executor for all consumers in a Session

* Session creates and shuts down an Executor, and passes it down to Queue, through Channel
* AsyncCallbackConsumer is removed, it has been replaced by running BlockingCallbackConsumer in a thread (to retain single thread semantics for a subscription block)
* There is one test failure "A consumer that DOES NOT catch exceptions becomes inactive when the channels prefetch is filled with unacked messages", it assumes that all exceptions raised by async subscribers are swallowed and ignored. It seems like a bad idea to keep this behaviour.

This patch was made while travelling at 200 km/h.
Remove redundant exception conversions
Replace identical methods on Channel with aliases

* Channel#session/connection/client
* Channel#channel_number/number/id
Revert "Remove redundant exception conversions"

This reverts commit cd54a873acacca815eec72aa195f014f58f4aa7e.

The conversion around new_connection is not redundant: if connection
fails due to a network issue, misconfiguration or authentication failure,
we don't want Ruby developers to deal with Java exceptions.
Remove a test that is not relevant any more
Rely on RabbitMQ Java client to do all the dispatch work with non-blocking consumers

This is not 100% finished yet. Some key points:

 * Do not submit blocking loops to the executor
 * Instead of maintaining our own executor, rely on the RabbitMQ Java client
   to do the dispatching
 * It is still possible to override the executor by providing an instance
   to ConnetionFactory. To cover connection recovery, we still may have to
   as for an executor functor (any Ruby callable), but this remains to be seen.

Overall, simply submitting a DefaultConsumer subclass to RMQJC sounds like
the best solution: less code in HotBunnies, 100% consistent behavior with
the client we wrap.

Like earlier changes on this branch, this is a BREAKING API CHANGE.
Change log updates
Merge branch 'single_executor'