Merge pull request #94 from bgamari/fixes

Gcode: Ensure std::string operations don't incur allocations
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.