Make global/static variables const to minimize data/bss sections.
Make light color definitions constant to save RAM.
Move CAN bus logging into the can namespace.
Fix test suite name.
Add a utility module for calculating stats - min, max, moving average.
Add a helper for delta statistics.
Log bus statistic with an exponential moving average.
Test compiling with statistics logging enabled.
Only support integer stats for optimized performance.
Refactor pipline stats to use new statistics module.
Fix a few statistics log string formatters.
Fix pipeline data statistics logging.
Log CAN queue sizes - always zero, so probably not useful.
Log pipeline queue statistics.
Instead of keeping large pipeline queues, flush when full.

As an alternative to keep a very large outgoing buffer to handle many
messages being queued up before sending, we flush the queue out to
USB/UART/Network whenever it is full. This doesn't have any effect on
incoming CAN messages (if we don't flush it incrementally here, we would
just block after returning from the translateSignal function while
sending data then). This approach requires much less RAM and can still
handle the occasional CAN message with many signals in it.
Add include guards for stats-only initialization.
Make a test case depend on a variable queue length instead of hard coded.
Fix a stats log output format string.
Save RAM on more constrained MCUs other than the PIC32.

This CAN controller buffer is only required by the PIC32.
Grab development version of the Python library in CI more often.