Removing the FDShimThread from the Design

The code has been updated, but the docs and the unit tests have not.  Those will be updated before this is merged.

This PR does four main things:

* Consolidates all qpid.messaging sessions to a single session that is stored on the Transport object. This significantly reduces the number of sessions being managed.

* Channel.basic_consume() now starts a qpid.messaging receiver, and stores a reference to the new receiver on the Channel. qpid.messaging is smart enough to receive I/O asynchronously after a receiver is started.

* The FDShim object was renamed to TransportReceiver, and does a blocking read on all receivers for the session associated with the transport. All receivers are monitored at once with the undocumented session.next_receiver() method. The existence of that method is what makes this redesign possible.

* The FDShimThread objects are totally removed. This reduces the additional thread count per transport to exactly 1 instead of N, where N is the number of active consumers per transport.  :-)

* This sets the prefetch_count to of QoS objects at least 1 at all times. The basic_qos arguments needs some work, and I didn't want to delay the main goal of this fix with that small detail.  prefetch_count is set to 1, which will allow the design to run correctly. A prefetch_count of 0 will never run with this new design.