Use faster implementation of Murmur3 for approx_distinct

Noticeable speedup in approx_distinct benchmarks:

Before:
     sql_approx_count_distinct_long ::  118.746 cpu ms :: in  1.5M,  12.9MB,   12.6M/s,   108MB/s :: out     1,      9B,       8/s,     75B/s
   sql_approx_count_distinct_double ::  119.971 cpu ms :: in  1.5M,  12.9MB,   12.5M/s,   107MB/s :: out     1,      9B,       8/s,     75B/s
sql_approx_count_distinct_varbinary ::  163.847 cpu ms :: in  1.5M,  21.5MB,   9.15M/s,   131MB/s :: out     1,      9B,       6/s,     54B/s

After:
     sql_approx_count_distinct_long ::   32.761 cpu ms :: in  1.5M,  12.9MB,   45.8M/s,   393MB/s :: out     1,      9B,      30/s,    274B/s
   sql_approx_count_distinct_double ::   34.674 cpu ms :: in  1.5M,  12.9MB,   43.3M/s,   371MB/s :: out     1,      9B,      28/s,    259B/s
sql_approx_count_distinct_varbinary ::   79.983 cpu ms :: in  1.5M,  21.5MB,   18.8M/s,   268MB/s :: out     1,      9B,      12/s,    112B/s
Add support for un-decomposable aggregation functions
Add missing @Override annotations
Enable experimental features in dev config
Fix issue when deserializing binary values from Hive

The code was incorrectly getting the raw underlying byte array from BytesWritable
Record "started" counter for queries that fail to parse

In the last release we started tracking parsing failures for error categorization,
but the change was missing the call to increment the started counter.

As a result, the started and completed counters get permanently out of sync
and cause the number of running queries to be reported as 0.
Improve unit tests for approximate aggregations
Add closed form approximate COUNT aggregation
Add closed form approximate SUM aggregation
Improve performance when computing partitions domain summary

This brings down the computation time from 70s (for 12k partitions) down to 250ms on my mac.
The previous algorithm was O(N^2) on the number of partitions times some non-obvious factor due
to how SortedRangeSet.union is implemented. There's still some room for improvement there.
Categorize user errors

* Categorize a bunch of illegal argument exceptions as user errors
* Categorize division by zero as a user error
Rename HadoopApiStats and move it out of util package
Truncate SQL query text in index page

Large queries make the table hard to navigate.
Add DirectoryLister interface
Change ErrorCode to a concrete class, to allow it to be json serialized
Refactor failure handling

Split FailureInfo into ExecutionFailureInfo and FailureInfo, so that error codes can be propagated back from workers
Add counter for total failed queries
Upgrade to airlift 0.87-SNAPSHOT
Remove debug logging

It makes the logs too verbose and doesn't add much value.
Use a private I/O thread pool for failure detector