Reformat README, clean up tests
Clean up code

Create a single, default _read() implementation, which subclasses can use.
Rewrite transport read() method

This new implementation uses a static `bytearray` buffer
and `memoryview` for a clean and efficient implementation.
Create channel lock for public channel methods
Add `@synchronized` decorators to all channel public methods

This is done in order to make them thread safe.