[WIP][SPARK-2054][SQL] Code Generation for Expression Evaluation

This PR drops the aggregation code generation, which will be added back in a follow-up PR.  The following remains to be done:
 - [ ] Remove remaining spurious changes.
 - [ ] Make configurable with #956
Is this used for pattern matching? I think it'd be easier to understand to readers if it has a name like "isNativeType(tpe)" rather than NativeType(tpe)