Aggregations: new “Sampler” provides a filter for top-scoring docs

Used to limit processing in child aggregations.

The existing Aggregator base class support for deferring computation of child aggs is modified (DeferringBucketCollector is refactored to be abstract and the logic it had for “best bucket” trimming is pushed down into a new BestBucketsDeferringCollector while the new logic for trimming based on doc score quality is in subclass BestDocsDeferringCollector).
Closes #8108
Or maybe a better way to expose such a functionality would be to allow this aggregation to take a query as a parameter, and then users interested in random sampling could use a random function score?