Moved the `tx_mesg()` and `rx_mesg()` functionality into `sentinel`.
Moved the rest of the relevant test functions from `comm.py` into
the `sentinel.Sentinel` class. Deleted `comm.py`.
Updated the subsystems to use a `Sentinel` object.
Fixed some simple bugs in `Sentinel` that prevented starting a
connection and sending a `ping()`.
Simplified control mode handlers in `control.c`. Added `rx_frame()`
and `tx_frame()`, and revised `echo_handler()` to use them.
Fixed MesgID in `codes.py` and resolved some warnings in C compliation.
Revised `sentinel._frame_data()` in order to try to track down
a bug messing with the `echo()` demo.
Still tracking down echo demo bug. Disabled sending error messages
from `rover` to `control`. Now initializing the `txq`.
Still tracking down echo error. Added data overrun detection.
Still debugging the problems with the echo demo, but now I've
found that the problem is definitely data overrun.
Confirmed that data overrun errors are occurring.
Data overruns (and other errors) are now prevented by calling
`Serial.flush()` after every character sent to `rover`, but
transmission is now absurdly slow!
Merge pull request #8 from dwtj/master

Merging David's bugfixing and sentinel implementation