Initialize read buffer in superclass
Add frame-level thread safety

Reading and writing frames can be done by only one thread at a time.
Use logging module instead of print
Add docstrings and several tests for exchange methods
Move everything unnecessary out of pytest.raises context
Move unnecessary items out of pytest.raises context
Reorganize tests in test_channel.py