Make fewer direct calls to 'error' and 'errorAtPos' in the parser.
Don't directly produce errors while parsing 'try' statements.
Don't report an error directly when parsing a function body.
Don't report errors directly when parsing throw statements or try/finally statements.
Don't create errors directly when parsing template spans.
Don't directly create errors when parsing expressions.
Extract out common code from the list parsers.
Don't parse nodes, only to not include them in the tree.  This will break incremental parsing scenarios.

Properly store the data for an external module reference in the AST.
Don't explicitly call 'error' when parsing a type.
Simplify the code for parseDeclaration.

This is to help get to a point where we can remove the direct call to 'error' within it.
Use a single member to represent a module reference.
Treat 'const' as a modifier if followed by 'enum'.
Replace unnecessary case in switch with assert.
Don't create a missing node for "foo[]".

We want to remove 'missing' nodes, and we also want to improve increment reuse (which missing nodes
interfere with).
Remove unused function.
Don't explicitly create a missing node when parsing arrow expressions.
Remove 'missing' syntax kind.
Remove unnecessary diagnostic flag.
Don't use the parsing error path for reporting ///reference errors.
Don't set kinds after the fact.