Adds type arguments (aka “generics”) to AST.

Augments AST to accept type arguments.   Improves some
syntax error messages.  IdentifierResolution now distinguishes
between defs and typedefs, since the latter can have type args.