White space cleanup of Main.java
Default to only run tests with reference output

The old behavior of running all possible tests can now be achieved
with the '-all' option
Add InvalidateDominatorInformation
Add ConstructUseChain
Use new passes

This now uses InvalidateDominatorInformation and ConstructUseChain.
Allow instructions to be deleted by a value

This just makes the whole idea more general and more useful.
Raise exception if instruction is deleted twice
Make perform CSE public again
Remove PerformCommonSubexpressionElimination

Put that logic into the CSE pass class
Make printAsArg raise error if instruction deleted
Add isDeadCode to instruction and derived classes
Implement method overrides for Read
Add option to compile test and output messages

This allows compile errors to be seen, with the same options the test
script is using.
Override methods for Cmp instruction

Cmp can not be a common sub expression, and can't be dead code since the
cmp instruction will generally have the side effect of setting processor
flags.
Add pass to remove deleted instructions
Add dead code elimination pass
Add option to perform dead code elimination

The default right now is not to perform dead code elimination.
Add simple test for dead code elimination