TypeScript generic type arguments can contain object (literal) types,
which in turn can contain semicolons:
const x: Array<{a: number; b: string;} = [];
Previously, clang-format would incorrectly categorize the braced list as
a block and terminate the line at the openening {, and then format the
entire expression badly.
With this change, clang-format recognizes < preceding a { as
introducing a type expression. In JS, < comparison with an object
literal can never be true, so the chance of introducing false positives
here is very low.