Aggregations: Fixes scripted metrics aggregation when used as a sub aggregation


The scripted metric aggregation is now a PER_BUCKET aggregation so that parent buckets are evaluated independently. Also the params and reduceParams are copied for each instance of the aggregator (each parent bucket) so modifications to the values are kept only within the scope of its parent bucket

Closes #8036
Just seen that I didn't clean these up so they throw nice exceptions. I'll do that as part of the review commits