Moved controller mib feature into mainboard src tree

It depends on config settings that are controller specific
Allow pushing pic24 firmware and resetting the bus

- 2 firmware buckets are now reserved for pic24 (4 for other modules)
- Setting the firmware type to 5 or 6 in the push start rpc chooses
  to push pic24 firmware rather than pic12.
- new controller rpc 7,5 cuts power to the bus for 1 ms to make modules
  reset
Update commander with bus_reset functionality
Add sector definitions
Reclock controller down to 8mhz

This avoids using the 4x PLL for lower power consumption and
faster wakeup from sleep since we don't have to wait for the
PLL to stabilize
Fix analog pin to digital for bus reset
Add ability to read and write flash from commander

This opens up the ability to test all things flash from the command line.
Also, during the writing of this, I realized that you must program the
serial flash one page at a time without crossing a page boundary.  This is
very important since the writes across a page boundary alias back to the
start of the page.
Fix flash writes to allow crossing page boundaries

Added memory_write_aligned that writes at most a single aligned
page of flash.
Replaced memory_write with a version that internally divides the
passed in buffer into page aligned portions and calls memory_write_aligned
for each one in turn.
Merge branch 'dev' into feature-bootloader
Implement and test a simple flash log based fs for config data

- Described in detail in flashblock.h
- Basically allows for persisting arbitrary config data that changes
  frequently to flash and making sure that you can always read the
  latest config data even after a device reset.
Refactor firmware_cache and persist in flash

- uses new flash_block system to simply persist state across resets
- can now store and read flash images across resets
- reduced memory footprint by removing redundant variables
Add memory location for firmware_cache config
Update function signature to void* to avoid casts
Update readme with scons dependency
Merge branch 'dev' into feature-bootloader
Fix USB PID to include leading zero for proper match
Fix fc_get_count function name to match convention
Fix uninitialized variable when verbose=False
Add HW Test capability to commander

- Based on py.test framework
- Implemented TestFirmwareCache as an example
Add hardware testing to modtool.

Use modtool test to run hardware tests on an attached momo unit.

Usage: modtool test list
will list all available test classes
modtool test <class1> ... <classN>
will run tests from only the listed classes
modtool test will run all tests