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
FYI you can avoid compiler warnings in such cases by doing `Map<?, ?> originalMap = (Map<?, ?>) original;` instead. (but we still need the `@SuppressWarnings({ "unchecked" })` because of the cast to `T` unfortunately)