Added map_agg aggregation function

This PR implements the ``map_agg`` function (#2014) to aggregate key/value pairs into a single map.
Another thing I'll fix while merging, but this doesn't quite work. You append to the KeyValuePairs in the input() function of MapAggregation, so these grow in size after they've been set in the GroupedState, and that's not accounted for