Split the work of parsing/executing out into multiple classes. Moved
in/out/err to be fields in Environment. The in field is used if a
command needs an input source during execution.
Added equals/hashcode and toString method for CompoundCommand. Also made
it generic. It's essentially just a wrapper around a List<Command> so
that you can execute them in sequence easily.
Variables can be final
Accidentally commited with some a testing main
Added a method to determine if a subtree is a descendent of a root
Added a few variable-related methods
Made all of the variable methods consistent
com.google.common.reflect.Types is package private, but I need some of
the methods.
Added more generic flexibility to Variables
Added Jukito/Guice
Added Imports
Changed TestEnvironment to a Rule
Added a method to join ParseTrees by the result of their getText method
Added an EnvironmentClassLoader. It checks with the parent ClassLoader,
but if it cannot find it it will check all of the Imports.
Added import tests
Added a utility to view a tree and wait for it to close
Started adding support for local variable declarations. Currently,
variables are always null and cannot be generic.