add closedir to simleshell commands that open directories
move digipot instance to CurrentControl module
make CurrentControl delete itself if not enabled
make Laser Module delete itself if not loaded
Merge branch 'move_digipot' into working
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