Implement serial data reading

Added a struct for messages and a Read() call to pull messages off of the serial connection. The user is responsible for repeatedly reading and sorting messages.

This code needs further testing before integration into master.