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>`
These names are taken from the TypeScript 1.0 spec. The name `moduleName` is not very useful but (it really is just the `operand` as we call it in `MemberExpression`) but I think sticking to the names in the BNF makes things simpler.