Refactor monolithic display into modular functions

Split up redrawScreen() into logical groupings to support future
separation into fast-updating and slow-updating elements. This commit
does not change logic; as such, additional changes will be needed to
ensure each module blanks the appropriate area before redrawing it.
Fix minor display color/count bugs

Eliminated an off-by-one error in finding the current sample value,
which indirectly resolved the extraneous transition line whenever a
channel was HIGH at time=now. Also explicitly defined text color for
channel name and value. For consistency, changed generic iterator
variable "i" in printDebug for loop to "indent".
Merge branch 'master' into display-refactor
Merge branch 'master' into display-refactor
Diagrammed display layout

Diagrammed display layout to indicate which area is affected by each
display variable. The resulting diagram is included in PNG and GIMP
formats.
Correct overshoot on canvas dimensions
Move buffer entirely into header

Anchor buffer bar graph to left edge of the header (simplifying some of
the math in the process). Relocated buffer text into the right edge of
the header.
Move zoom into footer
Add zoom scale marks to the footer

Add zoom scale marks, in number of samples, to the bottom of the
display.
Create function to clear plot areas

Split out a separate function to clear the plot area without affecting
the more static data. This will be useful for implementing update loops
of varying timeliness. Also updated TODO list to reflect recent changes.
Add blanking functions, by section

Add functions to blank specific sections: header, footer, left gutter,
and right gutter.
Merge branch 'display-refactor' into performance-fixes
Implement burst updates for plotting

Implement a mechanism that only updates the plot once every burstWidth
packet reads, rather than after every read. Preliminary results show
three-fold speed increase with burstWidth of 5, and no further gains
after that.