Implementation of the GroupBy operator (for sorted input)

this implementation of GroupBy assumes that the input is already sorted on the keys used
for the grouping as the query compiler will put a corresponding Sort operator in front of
each GroupBy operator. the GroupBy operator looks at each element's keys and whenever the
keys change from the current group's keys a group is returned. the element with the new
keys is the first element of the next group.
 inadequate fix for in process buffer freeing at TASK_STATE_FINISHED
Added a TypeInformation that represents groups (for group-wise partitioning)
some code for Fold