Added support for map construction from key/value arrays
Implement min_by aggregation function
Add JMX counters for query bytes rate distribution
Expire queries only after maxQueryAge

This fixes a regression introduced in c918b549cf0cca6c3329b8f8ea5c9d23beadb128, where
the expiration queue would get trimmed to maxQueryHistory regardless of how long ago
the queries had finished. This can result in clients getting "not found" errors
in highly loaded clusters that retire queries quickly.

This implementation now keeps queries around until for at least maxQueryAge after
they are finished, but it can keep them longer if the history is less than maxQueryHistory
 long.
Run information_schema queries only in coordinator

This fixes an issue where queries over information_schema could run in
any of the workers, resulting in inconsistent metadata due to caching
(e.g., "describe <table>" might show 0 columns for a table that had
recently been deleted)

As part of this change, the split scheduler has been updated to pick
the coordinator for processing coordinator-only splits regardless
of the value of the includeCoordinator flag
Make ParametricOperator.getDescription() final