move digipot instance to CurrentControl module
make CurrentControl delete itself if not enabled
make Laser Module delete itself if not loaded
Reorganized members in Pin class to save 4 bytes.

Drops sizeof(Pin) down from 12 bytes per Pin to 8 bytes per Pin.
Gcode: Again ensure no allocations occur

For some reason `const char std::string::operator[]` still assumes that
things might be mutated. `const char& operator[]`, on the other hand,
appears to do the right thing. I'll admit that this is evidence that
`std::string` is just too subtle here. Perhaps a homebrew string type is
in order.
Merge pull request #98 from bgamari/fixes

Gcode: Again ensure no allocations occur
Robot: static Pins
PauseButton: static Pins
Extruder: static Pins
TemperatureControl: static Pins
Endstops: static Pins
Stepper: remove redundant Pin pointers
Pwm: use underlying pin; Switch: static Pwm
ConfigValue: remove redundant as_pin and as_pwm methods
Merge branch 'feature/static-Pins' into edge
ConfigValue: use strtol/strtod instead of atoi/atof since they tell us directly if the string was a valid number, we don't have to do our own string parsing to work it out
ConfigValue: also accept 'y'/'yes' as a boolean
Pin: use strtol to parse pindef strings in a simpler and more efficient fashion
Switch back to ugly size output.

This works on Windows and doesn't assume *nix terminal with Perl installed.
Merge remote-tracking branch 'origin/edge' into edge
I giveth 2k back to the heap.

With commit d79d4eff87ffb5c88f19a32bf23d26ba0e52225a I initialized
_sbrk()'s heap pointer to the wrong linker symbol which ended up
taking away 2k from the heap.

Also removed redundant arm-none-eabi-size call in makefile.
GcodeDisplay: Use iterator instead of indexing

This avoids allocations due to _M_leak since possible_command is
mutable.