Remove automatic column addition for empty scan

Originally a column had to be selected to scan a table, so we always added
a cheap column to scan.  When we removed this restriction we forgot to
remove the code that automatically added a column to an empty table scan.
Use aggregation classloader

This fixes a ClassNotFound error when compiling aggregations from a plugin
Fix StateCompiler to use classloader of interface

Fixes an issue loading the ML plugin
Load balance splits across nodes

The maximum number of splits running on a node are bounded.
In order to avoid starvation of queries with fewer splits, beyond the
maxSplitsPerNode, every node allows a certain number of splits to be
queued per query. The drawback of this approach is that when the system
is heavily loaded (wrt number of queries), then the number of tasks on
each node will increase linearly with the number of queries and each
node will have at least some splits queued for each query. The drawback
is limited only when the system is heavily loaded and is not
any worse off than the current approach.
fix typo
Document AT TIME ZONE syntax
Extract base classes for Type
Add checkType that takes an error code
TableScanOperator should be blocked until split is added

Also, TableScanOperator needs to delegate isBlocked behaviour to its data source
to gurantee the same call procedure with ScanFilterAndProjectOperator
Add SPI documentation
Add REST API documentation and overview of Presto
Add documentation for HAVING and GROUP BY clauses
Add intToLong
Improve aggregation compilers

Generate byte code for entire Accumulator classes, also refactor the
verification logic to separate it from the compilation
Add getTypes to TypeManager
Add getTypeManager to Metadata
Add support for compiling accumulator that need to see nulls
Implement MAX_BY
Change CANNOT_DROP_TABLE to PERMISSION_DENIED
Add NOT_SUPPORTED error code