Refactor grammar check

This branch is for merging grammar checking phase with type-checking phase. The easiest way to review this PR is by commit that start with "Move grammar checking: ..." as each one will be the complete move of a node type 
there's an open question as to what the best thing to do is here.  Because 'declare' isn't valid as a modifier, we probably shouldn't set hte 'ambient' flag on the constructor.  But don't worry about that right now.