Tweaked a few generics
Cannot have void variables. Cannot assign incompatible types to
variables (String to int or List<Integer> to List<String>, for example).
I reworked how Commands, Executors, and CommandFactories work.
	- Executors can now throw an ExecutionException if anything goes wrong
during their execution. They are expected to either return the result of
their execution or throw an exception, never null.
	- CommandFactory will either return a Command, or throw a
ParsingException
	
The goal of this is two fold:
	1. Stop relying on Executors to report their own errors to the
Environment
	2. Increase testability