initial button implementation
changed on_m_code and off_m_code to strings to avoid needing to do an itoa
added M and \r\n to Button's on_m_code and off_m_code members
added comments to Button::button_tick()
Merge branch 'edge' into button
added ButtonPool to Main.cpp
initial 'break' command implementation to enter MRI
renamed the Player module to Conveyor
renamed all references to the Player module to Conveyor
moved play command into the new utils/Player module from SimpleShell, also added a configable on_boot.gcode and added SimpleShell as a member of kernel
added hook to call the new break function to SimpleShell's on_console_line_received
merged edge
Secret Sauce for windows to activate the driver it comes installed with
added make dfu
TemperatureControl: Use median smoothing instead of mean
Merge bgamari/median into edge
Add __mriPlatform_EnteringDebuggerHook() and __mriPlatform_LeavingDebuggerHook() to MRI.

Upgrades to version 0.5 of MRI.

A debuggee can implement these "C" hook routines to be called when MRI enters and
leaves a debug exception to do cleanup such as turn off heaters so that they
don't remain on while sitting in the debugger.

NOTE: You can assume very little about the state of your program from these
      routines.  I recommend that they be written in low level C code.  It
      isn't even safe to assume that C++ global constructors have been run
      before these routines are called.

Example which just toggles a LED on while in debug exception:
extern "C" void __mriPlatform_EnteringDebuggerHook(void)
{
    LPC_GPIO1->FIODIR |= 1 << 18;
    LPC_GPIO1->FIOPIN |= 1 << 18;
}

extern "C" void __mriPlatform_LeavingDebuggerHook(void)
{
    LPC_GPIO1->FIODIR |= 1 << 18;
    LPC_GPIO1->FIOPIN &= ~(1 << 18);
}
use MRI hooks to disable heaters in debug mode
Kernel: Use vector<array<Module*>> instead of flat array

As it turns out ON_CONFIG_RELOAD filled the previous array size of 32
entries. Using vector<array<...>> here does incur a memory indirection,
which Arthur rightly points out will have a performance penalty in a hot
path. That being said, we'll use this for now. Eventually it might make
sense to move to array<array<...>> with a sufficiently large size.
Gcode: Use operator[] instead of string::at to avoid allocation

Not entire sure why string::at allocates, but we don't need bounds
checking regardless. Perhaps this is due to const-ness?