Began transition to I2C Bootloader and Command Processing.  Added custom linker
script that places code .bootloader section at the end of memory and implemented
i2c slave command processing interrupt.  Commented out debug code over serial and will
soon remove those files completely.
Added latest pcb file versions
Added PCB script
Starting revising i2c code
Working I2C master code, verified on logic analyzer.  Starting bus protocol layer on top of the i2c hardware layer using continuations to allow for asynchronous message construction and processing via the task_manager
Added first version of pic24 slave code.  Working to test master/slave communication to have a platform on which to begin bootloader development.
Added rest of i2c bus files
Refined i2c communication logic
Updated code to prepare for merging
Merged changes from origin
Working version of i2c master and slave code running on two PIC24s talking to eachother.  Master and slave code can send and receive complete messages and finish the message in a definite good state.  Next step is to implement the RPC layer on top of the i2c and message layers that are done.
Added RPC layer on top of packet layer with typed parameters and return values.  Verified basic functionality by sending rpc between two pic24s.  Still need to robustify the code and finish documenting it.
Significantly refactored slave bus code to make it
much less horrible.  This should be more maintainable,
more transparent as to what the slave is doing and just all
around better.  I added a bus reset condition to force the
slave into a known state by sending its addres with a read followed
by a write.  This will not happen normally in the protocol so the
slave can safely reset to a known state when it happens.
Changed protocol to include an arbitrary write after
each transaction.  This is to force the slave to reset
itself back into command receiving mode.
Refactored slave code into slave subdirectory and master
code into master subdirectory.  bus.c now includes only code
common to both master and slave logic.
Minor cleanup
Split up master and slave routines into different files for i2c module.  Unified the buffers used by the master and slave mib routines
in mib_state.  The slave logic now disables the master logic once it receives a valid address and reenables it after it finishes receiving a command
MIB protocol code is at a useable level.  The packet layer checks each packet for checksum errors and informs
the rpc layer.  The rpc layer is robust against transient errors.  It automatically resends commands and parameters
and return values until they are properly received.  I need to add checking for nonexistant slaves since currently
we would just loop forever in that case since their response checksums would never match up.

The code should be pretty stable at this point though and I envision relatively minor changes to it from now on.
Changed mib slave code to automatically generate parameter lists for commands that it knows
based on a packed structure describing the parameters that the command takes.  This means
the command handlers do not have to worry about creating their own parameter lists anymore.

Also removed references to gsm, registration and uart since those are going to be changing
and moved them to an old folder for safekeeping.
Refined mib slave code with convenience macros for extracting typed parameters and easily creating return values.

Added mib slave endpoints for writing to/reading from the flash memory attached to the controller pic.  Tested these
and they work.  This will form the basis for reflashing the controller pic.