Refactor ApproximateAverage

* Remove dependency on VarianceAggregation, and refactor to match the other approximate functions better
Bug fix for approximate AVG and SUM error bounds

* Fix AVG error bound, so that we divide by the unweighted number of samples, instead of the weighted number.
* Fix SUM error bound, to include missing samples term, and to compute the variance of the unweighted data
* Include derivation of error bounds in comments
* Improve unit tests for approximate aggregations:
** Check that error bound is neither too tight nor too loose
** Test on random number of samples, instead of always testing on a fixed size
** Increase amount of data used in testing
Update jmxutils to 1.15

This fixes an issue when exporting duplicate mbean names
Categorize illegal arguments to CAST
Categorize more hive split errors
Categorize errors with json functions
Resize groupby ChannelBuilder if there is no space for the frist row
Change canUse() to return true on success, instead of false
Add helper methods similar to checkArgument
Upgrade to d3 3.3.4
Add thread visualization UI

It can be accessed via /ui/thread
Remove hack in LocalExecutionPlanner.visitTableWriter

createInMemoryExchange was being called with the TableWriterNode and returning
a PhysicalOperation with the operator for the "source" node but the layout of the
table writer. There was a hack in visitTableWriter to avoid the resulting broken
behavior. This commit fixes the underlying problem and removes the hack
Fix bug where fields may be written in the wrong order

This bug in CREATE TABLE AS SELECT was introduced by ad73cf8f57f70da2b165f0128c4c84ed6f5b2c14
with the removal of the call to unpack(...). This of this method was to turn multi-field
channels into one channel per field, but also reordered channels to match what the operator
expected.
Fix thread visualization refresh
Add 0.64 release notes