Fix parsing of generic types

Previously, the parser assumed a list of type params only included a list of type parameters. This is sort of true for declarations that declare these type parameters, like `function foo<S, T>() {}`, but not true for generic types, like `var a : Map<string, Array<number>> = ...`. (Side note...it actually won't be true for anyone when [generic constraints](http://www.typescriptlang.org/Handbook#generics-generic-constraints) are added in and you can do `function foo<T extends Bar>() {}`

The one tricky thing about nested generics is that the last token in `Map<string, Array<number>>` looks like a right shift token `>>`. We need to give the lexer a hint that, while parsing types, this is not a token we're going to see.

@oyvindkinsey's transform will need to be patched when this change is deployed.