Add Argument.java

This class exists to provide semantic information about which variable a
value represents when used as an argument for an instruction.
Handle null values in Identifer.equals
Modify test case cse_globals
Modify test case cse_if
Add test case easy_loops
Remove test case brian
Add reference output for cse_arith
Add reference output for cse_array
Add reference output for cse_globals
Add reference output for cse_if
Add reference output for easy_loops
Add reference output for test005
Add reference output for test006
Add reference output for test007
Add reference output for test008
Add reference output for test009
Add VariableReference to wrap values

This will be used to wrap values that are used while referencing
variables. This allows for enough information to exist that variables
can be replaced by phi instructions in loops if necessary.
Wrap references to variables

Values that are references to local variables will include information
about what variable is being referred to.
Modify test case cse_loops

This test still fails since my CSE implementation has bugs.
Update reference output for test008

The previous output was actually incorrect.