The build and validate commands now take a list of files to process.
The outputs for files that specify the are given the same name as
the containing file with the extension changed to the extension that
the converter specifies.
* Moved the AST datastructures into their own module.
* Collapsed the Expression Enum to just wrappers around structs
instead of having actual structs in the definitions.
* Added a few more unit tests to ensure nothing got broken.
* Added documentation for the new structs.
* Added a unifying BinaryExpression Tuple type.