Fix multithreading for Hive tests

The initialization should happen once for the class and not for each method
invocation. Otherwise, the initializations will stomp on each other.
Canonicalize expressions before analyzing join criteria

The expression interpreter only understands a subset of expression types
Minor cleanup for bindConstant
Simplify generation of IN with huge lists

Don't use a custom FunctionBinder. Instead, bind the set as a constant using invokeDynamic
and emit an invokeStatic call to the helper "in" method.
Optimize json_size function

Avoid extra round trip by performing size directly in extract code
Use function binder to cache patterns in call site
Refactor verifier to use Guice
Remove extra newline
Improve aggregation framework

* Introduce a compiler for accumulators
* Introduce compiler for aggregation functions
* Add annotations, so that aggregation functions can be defined as a combination of static methods
* Benchmarks show ~10% performance improvement on TPCH query 1, and ~30% speed up for SUM()
Remove AbstractSimpleAggregationFunction
Add unit test for evaluate_classifier_predictions
Add support for aggregation functions with multiple arguments
Add support for overloaded aggregations in compiler
Remove broken approx_distinct(boolean) function
Refactor approx_distinct to use new aggregation framework
Refactor COUNT_IF
Refactor approx_set
Refactor count aggregation
Rename AggregationFunctionMetadata
Add support for approximate aggregations in compiler
Refactor approximate sum aggregations