DRILL-356: Changes to support date type
Start on move towards optiq for I --> p

optiq-opt1 More WIP.
DRILL-450: Add exchange rules, move from BasicOptimizer to Optiq
- Fixes for more recent optiq snapshot
- Fix hash rule to insert xor rather than ^
- Update dates so they write correctly
- Add DrillSqlOperatorTable that supports resolving calls from Drill Function registry
- Add Hack SqlParserImplFactory to override default AbstractSqlParserImpl use of Std operator table
- Remove spaces from function names to make ExprParser work correctly
- Add VarBinary to Hive object inspectors
- Update ExpressionTreeMaterializer's visit function call to return NULLExpression instead of null so that FunctionCall constructor's ImmutableList.of() doesn't throw exception on missing cast expression.
Updates for latest Optiq version
Support identity comparison of RelDataTypeDrillImpl.  Fix tpch query aliases in 04 and 09
Support CASE statement in query 1. Pending testcases
Modify StreamAggPrule to support no group by key case. Modify MergeJoin to reject cartesian join.
Use RexLiteral.type and RexLiteral.typeName while converting from Optiq to Drill literals.
Use IntExpressions for integer as opposed to DoubleExpression
serialize "and" function as "booleanAnd" to not confuse parser
Expression string builder bug, JODA cannot handle white space
implement function to cast from long to date, timestamp
fix or, query uncomment and add absolute reference.
Add the date expressions in the tpch queries
fix merging receiver
in partition sender, on Iteroutcome.STOP, cleanup without flushing
in partition sender, release incoming vectors after partitioning
set def recordCount for explain
Build the IfExpression correcty in ExpressionStringBuilder
Use IntExpression instead of LongExpression for integers
Create CastExpression and traverse visitor pattern while performing implicit cast in ExpressionTreeMaterializer.