Use a pack, not an archive
Use 'word' for 'input'. Put 'rest' outside position record.
Parser: instead of a record, use a map for representing axis

This is more flexible when we have many axis.
Parser: have a whole machine state around, not just absolute/relative
Parser.string_of_input: properly thread machien state - even if it's unused
Parser: support for G2, G3, the arc commands
Parser: machine state now tracks keep of tool position
Lexer: always uppercase register name
Parser: last move command stays in effect until overridden by unknwon G/M-code
Parser: call move/arc move_reg/arc_reg
Parser: moved 'move' and 'arc' commands to their own records
Parser: collect feedrate