Separate field and local variable declarations in grammar.

It will help during later stages, since they need to be treated
differently.
Add some initial work on symbol table construction.

The main data structure is SymbolTable, which contains a map of
declared classes, each represented by a ClassInfo.

Each ClassInfo has a number of fields and methods, represented by
VariableInfo and MethodInfo.

Each MethodInfo has a list of parameters, and a multimap of local
variables. Internally it also maintains a stack of numbered blocks,
Each time the analysis enters or leaves a block within a function,
it must call enterBlock() or leaveBlock(), respectively. This will
ensures that addLocal(..) and getLocal(..) will work properly.

addLocal(..) adds a local variable to the current scope, and
getLocal(..) returns a local variable if it is visible in the
current scope.

Types are represented by the Type (abstract base class), BuiltInType,
ClassType, UndefinedType and UnsupportedType classes.