Implement Oliver's code review changes.

Mostly code polishing except for two functional changes:
 -- SampleBuffer::initialize() cannot terminate calling thread
 -- write thread only sleeps when there isn't a full buffer that needs
    to be written
Draw plots with different colors.

Set color cycle to use a range of color values determined by number of
plots. Rename non-public methods.
Handle DecodeErrors when decoding protobuf data.

Will stop decoding and ignore messages after the DecodeError since it
is unable to determine where the next message will start.
Warn when DecodeErrors occur in protobuf data.
Merge remote-tracking branch 'hazelnusse/buffer_overhaul' into dev