Initial implementation of file output

Only outputs line primitives (G01)
Added support for the Image Name (IN) parameter
Allow aperture numbers greater than 999

Changed in revision I1 of the specification
Moved exceptions to a dedicated file
Fixed a require
Allow spaces in image names because RS-274-D allowed it

At some point this sort of thing may require a proper backwards-compatibility mode. For now, being liberal during parsing should work well enough
Ignore the ICAS parameter

It's not in the spec and google doesn't seem to know anything about it. All of the forum posts I managed to find say that it's safe to ignore.
Handle AD parameter modifiers separated by spaces for RS-274-D
Added support for parsing Aperture Macros that don't have variables
Implemented parsing of Aperture Macros with variable modifiers

Doesn't support variable expressions, or any variables other than the indexed modifiers provided by AD parameters
Fixed setting of Gerber#units when parsing
Added support for aperture macro comments
Added support for Aperture Macro definition primitives

Stored as text for now. Need to actually convert them to expressions at some point. This implementation is good enough to round-trip a file, but that's it.