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)