Cells

This branch updates `oppy`'s cell representation.

Major changes:
- cells are represented by regular Python classes now instead of namedtuple's
- inheritance is utilized to simplify cell parsing
- instead of overriding the `__str__` method to get the raw bytes of a cell, each cell implements a `getBytes()` method
- Link Protocol version 4 can now be supported
- cells now use a `Header` and `RelayHeader` object (inner class)