This change adds some rudimentary support for conditional types.
Specifically it avoids breaking before extends and infer keywords,
which are subject to Automatic Semicolon Insertion, so breaking before
them creates incorrect syntax.
The actual formatting of the type expression is odd, but there is as of
yet no clear idea on how to format these.
See https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#conditional-types.
Add a comment that this formatting of the type expression is not yet clear (esp. I dislike the last line).