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>`
We generally haven't tested invalid trees much. We only test valid trees implicitly.

I'll file a bug at least.