I think we should have something to characterize aggregators that create buckets (just checking `parent != null` is not enough as the parent might just be a filter agg). For example, metrics aggregators have MetricsAggregator.SingleValue and MetricsAggregator.MultiValue, maybe buckets aggregators could have BucketsAggregator.SingleBucket (SingleBucketAggregator today) and BucketsAggregator.MultiBucket (doesn't exist today, terms/histogram/... aggs extend Aggregator directly) so that checking if an aggregator creates buckets would just be `parent instanceof BucketsAggregator.MultiBucket`?