Update pic12_executive and gsm_module to use local build settings

- Modify scons to allow local build settings for pic12 modules
- Add settings for gsm_module and pic12_executive
- Fix unit testing to show proper target names

Update gsm_module to target both pic16lf1847 and pic16lf1823

- Update pin locations to be in module_settings.json
- Create port_definitions.h shared file that knows which pins can be made analog or not
so that we can safely try to make a pin analog or digital even if that pin does not support
it on a specific chip but the failure is not important.  Without this we get compilation
errors because the right analog register doesn't work.

Bugfixes for GSM module

- Update mib12 API to be compatible with pic16lf1847 and 16lf1823
- Update gsm_serial to allow for alternate serial port pinout
- Update module_settings.json to specify alternate serial port pinout
on v5 hardware

Update build_settings to remove last vestiges of global module configs

Bug fix on pic12lf1822

Don't drop user into a shell is first momo command is wrong

Add BuildError exception and update autobuild to catch MoMoExceptions

- default behavior prints the exception and exits with a status code of 1

Update test files to be compatible with build system

Bugfix momo shell

Add ability to programmatically generate test runners from module unit tests

- Also fix bug in finding src files specified in module tests

Remove verbose printing

Finish work to integrate pic24 unit tests into build system

- linkedlist test is currently not passing on pic24f16ka101 for reasons
that are unclear.

Update mainboard code and build system to include metadata

- stores checksums of the firmware image and an 8-byte hardware id
  that will be checked by the bootloader before loading the application

Update linker script to include metadata section

Update bootloader to explicitly validate all firmware code.

Controller firmware now includes a 32 word metadata segment
that contains checksums for the interrupt vector table, alternative
IVT, metadata block and all firmware code.  This block is validated
by the bootloader before jumping into application code and if it
is not valid, the bootloader signals its error status by toggling
the ALARM line at a rate of 50ms*ERROR_CODE where error code is 1-7
so looking at the alarm pin pulse width tells you the error code.

This has been tested on the current hw version and works

Add support for dumping and creating controller firmware metadata
blocks.

Add ability to inspect ControllerBlock metadata in momo tool

BUGFIX: the routine to pack controller firmware was off by 1 word

This means that the firmware would be packed incorrectly into FLASH.
It looks like this only affected the highest ROM word so this may not
have actually caused any problems in the field but it was preventing
the new bootloader from running firmware because it failed validation.

This is now fixed.

Update controllerboard code to have new locations for pins

Update hexfile to show addres where two files differ
Merge pull request #138 from amcgee/feature-checksumfirmware

Support v5 hardware and implement firmware checksums
If one of the build steps fails, fail the entire build.
Merge pull request #139 from amcgee/fail_when_something_fails

If one of the build steps fails, fail the entire build.
Always output a map file when linking.
Merge pull request #135 from amcgee/always-output-a-map-file

Always output a map file when linking xc16 modules.
Remove unused OUTPUT_DIR build var
Update 02-modules.md
Update 02-modules.md
Rename 20-Tutorials.md to 50-Tutorials.md
Update and rename 21-DeviceConnection.md to 51-DeviceConnection.md
Create 40-Tools.md
Rename 02-modules.md to 10-modules.md
Rename 01-core.md to 61-mib.md
Update 90-Contributing.md

Expand contribution docs to be clearer and more up-to-date
Update 90-Contributing.md
Update 90-Contributing.md
Update 99-license.md
Update 10-modules.md
Create 11-controller.md