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>`
Seems like this error message would be confusing.  I don't see a test illustrating this path.