large updates

- Added PID software controller
- Added HeatingSMPID which uses the PID as part of the state machine
- Changed static on-stack arrays to be dynamically allocated so we don't
step on ourself
- Specialized utilities::printArray for floats so they are pretty
printed
- Added test cases for PID