Add Designator classes

These classes provide the information needed to generate an assignment
or variable reference. The base class is used for normal variables, and
there is also a specialization for arrays.
Add Type classes

These classes contain information about the type of a variable and are
created during a type declaration. Currently only variable types are
fully implemented, but will correctly generate code to access both local
and global variables.
Maintain type information in Environment
Modify parser to use Type information

Type information is used when dealing with designators, and generated
when parsing type declarations.
Add Environment.freezeGlobals

This will go through the outermost type environment and call freeze on
them. This has the effect of converting unused global variables into
local variables.
Freeze globals after parsing function declarations
Compute array indexing in ArrayType
Modify parser to support arrays