Types now successfully returns generic types
Provide a useful error message for invalid type arguments
Added wildcard types
Added a new helper method to TestEnvironment
Split the work of JavaCommand into three distinct parts:
1. A parser which returns an intermediary result
2. An executor which takes an intermediary result and executes it
3. A CommandFactory which puts the above two parts together into a
Command