Improved function sematic checking.

 * Moved checking that array formals are sizeless to the FunctionType
   constructor.
 * Added reference to the definition node in FunctionType to track that
   there is at most one definition per function.
 * Added checking of function declarations.
    - SymbolTable given separate methods for function declarations and
      definitions, and multiple declarations allowed, as long as the types
      match.
 * Added detection of name-collisions between functions and toplevel
   variables.
 * Added testcases for sized formals and files with declaration+definition
   of the same function.