Add parsing support for type generics

Aka TypeArguments. The syntax is taken from the TypeScript spec
and here are some examples:

`Array<number>`
`Map<number, boolean>`
`a.b<c, d.e, f.g.h>`
Is this a TypeScript thing?  I don't understand how `moduleName` can be a `TYPE_NAME`  unless we define types with modules and insist that the `moduleName` matches.  I'm thinking of `ParseTree` vs 'src/syntax/ParseTree' or 'src/syntax/ParseTree.js'.    Maybe a comment ?