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
I know I was the one who suggested random sampling but it was really more to start a discussion than a recommandation so if it ends up making everything more complicated I'd be happy to not have it in this PR :)