Fix handling of SampleNode in SymbolExtractor
Add array constructor syntax to migration guide
Add developer guide to documentation

Currently, this includes documentation for types, scalar functions, and
aggregation functions
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
Split up TestWindowFunctions

This makes it easier to find the tests for a given function and will be
necessary as we continue to add functions and tests.
Preserve ordering in window assertion output

Keeping the output in the same order as processed by the window
operator makes it easier to reason about and debug failures.
Make peer group range available to window functions

This is needed to implement logical window framing (RANGE).
Support using aggregate functions as window functions