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>