DRILL-679: Support create table as query (CTAS) (contd.).

Continuation to e19606593f3173d8f82ca3074186e9ca7a960ce2.
Refactoring and align the writer interfaces similar to reader interfaces at the storage and file format level.
DRILL-674: Consider the view/table identifier given in CREATE VIEW/TABLE statements.
Fix hash join functions for variable types to use the correct buffer.
Join order: Use parquet row count as the basis of scan cost. Transform select count(*)/count(columnName) into DirectGroupScan when possible.

Nullable return type for extract function.

Fix a bug in DrillProjectRule. Fix bug in ProjectPrule, set Direction for RelCollation trait.

Set nullable properly for extract function's  return type and 'any' type in view DDL or table field lists.
In Logical rule, use child's trait when convert child to logical.  Propagate traits from child to parent, for Project/Filter etc.

Clean up in TestJdbcDistQuery test case.
DRILL-687: Support selecting Date, Timestamp, Decimal data types from Hive into Drill

Add unit test
DRILL-688: Fix timestamp constant serialization
DRILL-689: Disable dense decimal data type
Add support for RepeatedMapVector, MapVector and RepeatedListVector.
DRILL-692: Add Hive UDFs to Drill SQL operator table.
DRILL-683: Qualify HBase scan with specified columns even if row_key is required.

 + Added some log messages
DRILL-686: Verify the operands while extracting projects that can be pushed into a scan
DRILL-696: Use standard HBase configuration name/value in HBaseStoragePluginConfig
DRILL-695: Push down column value predicates into HBase scan
DRILL-529: 'atom' rule in Antlr grammar uses wrong token for calculating ExpressionPosition
DRILL-567: Maven RAT plugin - Ignore all files inside a hidden directory ".*/**"
DRILL-691: Function alias to be able to cast to TIMESTAMPTZ data type
DRILL-690: Generate 2 phase plans for Hash Aggr and Streaming Aggr only if the aggr functions are SUM, MIN, MAX.

Added session options for enabling/disabling aggrs, joins and multiphase aggrs.  Modified DrillRuleSet to populate the rules based on options rather than from static list.  Added matches() implementation for join and aggr rules.
Disable multiphase aggregation.
Enable class unloading in unit test.