Update bootloader to work with new board.

- now waits for ALARM pin to be released before starting a reflash.
This fixes a bug with using Pickit3 to program the bootloader where
the bootloader would trigger immediately after being programmed
- updated SPI flash to full-speed.  There was no reason to be using
it at 1/512th speed.
- communication with main controller firmware is now done not with
EEPROM but a perisistent global variable.  The new chip has no EEPROM
Update shared pic24 module for new PIC.

- Code paths that must be different on Pic24F and Pic24FJ are now
defined using the preprocessor for each chip.
- The ADC and SPI flash code has been updated.
- Upgraded SPI flash speed to full-speed. Things are *much* faster
now.  We had been using it at the (default) 1/512th speed until now.
Update controller code for new board.

- RTCC lives forever now with the backup battery, so
don't reset it on a power-on reset
- reflash endpoint now uses shared global variable to communicate
with bootloader rather than flash.
- updated linker script with new memory map for new chip
Add macros for easy IOPort manipulation
Add support for targeting multiple chips with pic24 lib.

- rake buildFJ will target the PIC24FJ64GA306
- rake buildF will target he PIC24F16KA101

There is no default build since you need to pick which one you
want to target.
Update FSU to use correctly targeted library
Update mainboard to use correctly targeted libPic24
Remove #error directive when target is not PIC24F16KA101
Merge branch 'pr-controller-sleep' into pr-support-pic24FJ64GA306

Conflicts:
	momo_modules/mainboard/src/main.c
	momo_modules/mainboard/src/mib/controller_mib_feature.c
	momo_modules/shared/pic24/src/modules/memory.c

Merge in controller sleep functionality with new chip code.
Remove remaining merge artifact
Sleep by default
Add light sleep option to keep Flash memory hot.

Normally the flash memory is powerd down during sleep to conserve
power but when we are pushing firmware, the wakeup time to bring
the flash back up is ~10 ms per 20 byte push RPC since we have time
to sleep after each one.  This makes pushing slower than it needs
to be.

This commit adds a flag that tells the sleep_handler to not power
down the flash memory if we expect to wake up and use it very soon
Update pic12 executive to not boot apps on ALARM

You can now force all of the mib modules to not start
running user code if ALARM is low on reset.
Remove potential bug with analog pins.

You should always set a pin level using LATXY, not RXY.
Internally the cpu does a read-modify-write operation and
analog pins are read as 0, so if you touch RXY, you can
unintentionaly reset all the analog pins to drive 0s.  LATX
if the register holding the output values, RX is the register
holding the currently measured values.
Fix bus in bus_reset code.

The bus reset line is high for cutting the bus off, not low.
Add power on rpc call
Merge branch 'dev' of github.com:WellDone/MoMo-Firmware into pr-support-pic24FJ64GA306
Merge branch 'dev' into pr-support-pic24FJ64GA306

Conflicts:
	momo_modules/mainboard/src/mib/controller_mib_feature.h

Merge sensor api code from latest dev and fix merge errors.
Streamling UART code and add failsafe functionality

- UART now has a codepath for automatically resetting on reception
of a NULL byte if the flag is enabled
- UART also now heartbeat echos the character 255 whenever it
receives 255, if the flag is enabled

This means that we can positively identify the presence of a FSU
on the serial bus and reset it if is acting abnormally.
Add base multi_sensor_module code.  It's just a clone of pv_module with the names changes.