Initial refactoring to support doing grammar checks as a separate pass of the tree.

Right now, this means hiding 'syntacticDiagnostics' behind a getter function that
only computes all the syntactic diagnostics (parser+grammar checks) lazily.

This will help incremental parsing out as we can reuse nodes that have grammar
errors in them, and we dont' have to even do grammar checks if this is not the
full-type-check type-checker.
Move parameter name 'strict' checking to the grammar walker.
Move parameter grammar checks to the grammar pass.
Use the entire indexer node for grammar error reporting.
Skip error checks on node if any children produced errors.
Rename and simplify code.
Move accessor grammar errors to the grammar checker.
Move object literal checks to the grammar checker.
Move template version checks to the grammar walk.
Move postfix/prefix checks to the grammar check.
Move enum checks to the grammar checker.
Move variable grammar checks to the grammar checker.
Move contructor grammar checks into the grammar walker.
Move module grammar checks to the grammar checker.
Move variable statement checks to the grammar checker.
Move catch block checks to the grammar checker.
Move type parameter checks to the grammar checker.
Move strict check for binary expressions to grammar checker.
Move all strict checks to the grammar checker.
Move grammar checking on a trailing comma to the grammar checker.