Cleanup buildAggregation on sub PER_BUCKET aggregators.

The idea is the following: the only bucket ords that you can receive in
buildAggregation are either between 0 and estimatedBucketCount for
fixed-size bucket aggregators that pre-allocate buckets (eg. range aggs)
or created on the fly and in that case buildAggregation only gets called on
buckets that have been fed with data (eg. terms aggs). So if you make sure that
your buildAggregation can be called on any bucket that has received data or is
between 0 and estimatedBucketCount, everything works fine.

The major change of this commit is in AggregatorFactories, where aggregators are
now allocated eagerly between ords 0 and estimatedBucketCount, and where
buildAggregation doesn't perform any check on the bucket ord anymore since we
know there is an aggregator allocated for the provided bucket ord.