Temporary workaround for #25

 #25 = buffers are currently still being freed when the TASK_STATE_FINISHED
 arrives, yet when that event arrives it is checked without synchronization
 that all buffers have been freed
TypeInformation for groups (for group-wise partitioning etc)
Physical Fold operator that folds all elements (not group-wise)
Revert "TypeInformation for groups (for group-wise partitioning)"

This reverts commit 504ad9cfcaae6afb269787f0d79ab19b8cfd74ac.

Rationale: we will transfer elements of a group pipelined (=element-wise)
and not as a single collection (=materialized at each operator).
partitioning will therefore also be done on a per-element basis.
Pipelined GroupBy and Fold working on groups as well as elements [HACK]

GroupBy now returns elements instead of collections, but returns null values
whenever a group is finished, which the OperatorDriver then translates into
GroupEndMarker tokens. these GroupEndMarkers need to be handled by subsequent
operators, e.g. fold returns aggregates group-wise when the input has been
grouped.

the implementation is rather hacky, but works for a basic example (and does
not materialize groups at any point).
Physical FlatMap that provides a group via an iterator to its UDF

the physical operator currently materializes each group before providing
it via the iterator to the UDF... :-/