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
DRILL-474 - Long.MIN_VALUE is not parsed as BIGINT but as a Double
DRILL-476: Create binary_string() function to convert encoded binary string to sequence of bytes
DRILL-477: o.a.d.exec.vector.ValueHolderHelper.getVarCharHolder() creates a BigEndian buffer
DRILL-452: Conversion functions for external data types
DRILL-452: Conversion functions for external data types - additional convertors.