Added ASTs w/ visitor pattern

Added AST classes in preparation for writing the parser. Each AST
(beside list types) have an accept() method that allows a Visitor class
to access an instance.