Refactor the consumer cancellation to take no_ack into account (#25)
Refactor the consumer cancellation to take no_ack into account (#25)

Previous code did not account for no_ack consumers. New code keeps track of the no_ack flag along with the consumer in the stack and when closing, if any consumers were no_ack=False, it will grab the largest delivery_tag for any consumer object that had no_ack=False and nack all messages on that that delivery tag.

Also, add a little more visibility into remote channels being closed by logging the reason.

jonahbull/rabbitpy,gmr/rabbitpy,gmr/rabbitpy