method: Implement channel method class
method: Add reserved fields to connection and channel

The types weren't clear in the spec - types were instead taken from
https://www.rabbitmq.com/amqp-0-9-1-reference.html
methods: Add constructors where applicable

The main points here are to set defaults for reserved fields,
and to allow Bits() flags to be passed in normally.
datatypes: Refactor Bits and Sequence for some nicer behaviour

* Made Sequence constructor take args and kwargs in a smarter way
* Add BitsType, _Bits._names and _Bits.__name__
* Add Bits special case for Sequence
* As part of all this, refactor the way fields is used into a bunch of transforms
Implement methods.exchange
frames.datatypes: Rewrite Sequence again so it actually works

Previous implementation, besides bugs and unimplemented stuff, had a core problem:
None fields were incompatible with using a dict to index fields.

Some of the helper class properties were shuffled and the __init__ was re-written,
so everything is position-based.
frames.datatypes.Sequence: Extend "None means ignore" functionality to BitType names
methods: Change to use new fields.datatypes.Sequence functionality
Implement methods.queue
Fix some bad indendation in frames.common
frames.method: Introduce concept of "does this method expect content following it"

This generalised approach will help later with associating incoming methods with their content.
methods.queue: Get rid of has_nowait, not using that system anymore
frames.method: Allow multiple response Methods from a Method

This is needed for basic.Get -> basic.GetOk, basic.GetEmpty
methods.basic: Implement basic method class
methods.tx: Implement Tx method class
methods.confirm: Implement confirm method class
methods: Import all the method-class modules

This has the side-effect of registering all the methods contained therein.
methods.* : Import needed datatypes from frames.datatypes

It was easier to do this for everything at the end than as I went.
datatypes: More permissive equality for DataType

We keep the requirement that datatypes must have the same type
(to prevent things like ShortString("x") == LongString("x")
but allow non-DataType comparisons to compare to self.value
(this allows eg. ShortString("x") == "x")
frames: Overhaul DataType to add a get_value(), and use it to make getting values from stuff cleaner.

The best example of how this is useful,
let's say we have a Sequence A containing "foo" as Sequence B,
and Sequence B contains an integer "bar".

Then we can do: seq_A_value.foo
and get back a DataType (Sequence B)
but we can also do: foo.bar
and get back a bare integer, not a datatype.UnsignedLong or whatever.