Add greater typesafety in the expression portion of the syntax system.

Note: this change reveals that there is definitely some wonkyness going on
with nodes like FunctionLikeDeclaration.