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 
add comment that we simply don't care about thsi case.  It's fine to not report an issue here since we basically turn off all checking within a 'with' block.