AMQP 0.9 support, ->confirm, on_return, more reliable on_close, leak fixes

This is the change I've been working on.  I haven't got tests for all the new features, but the old tests still work, and the new features are in place, particularly support for RabbitMQ AMQP 0.9.1

The on_return callbacks now work at channel and connection level and, as a bonus, at publish level (but only if confirm mode is on, else we have no way to know when to delete the callback).  Handle CancelOk better -- it may be received out of order.  Handle flow control without dropping messages.  Fix a relatively minor memory leak.  Handle server-sent Nack, though these are infrequent.

And improve tests to work in both confirm and non-confirm mode.

Seems like maybe the test suite for this and RabbitFoot should be merged somehow...