Code cleanup.

 * All public functions of SymbolTable now take a single node as a
   parameter.
 * All errors print with the same error header.
 * More precise error messages for some semantic errors.
 * Semantic checking code simplified using for-each over node children.
 * Bug in SemanticChecker.checkArrayLookup from last commit fixed.