Amqp 0.9.1

To improve my understanding of the library before implementing amqp 0.9.1 support, I've taken the liberty to clean up the code a bit. There are no changes to the interface or the underlying model, I've only fixed all warnings and improved readability at some points.

The major motivation for the switch to 0.9.1 is to be able to bind exchanges to exchanges. This allows for great expressivity since different exchange types can be combined into complex patterns. 

There are probably still some minor changes necessary to make it completely comply with 0.9.1, see http://www.rabbitmq.com/amqp-0-8-to-0-9-1.html.