fixed operator type for compactified tasks
squash with: Temporary workaround for race condition when deploying tasks
OperatorResult, group handling with chained tasks, fixes, tests

OperatorResult: Physical Operators are no longer returning either an
element or null to indicate that either a group or the entire stream
is finished, but return OperatorResults (either wrapping an element
or a group end marker or a stream end marker). This significantly
simplifies the code (especially the OperatorDriver), but also each
operator as we're no longer waiting for null but for END_OF_STREAM.

Group ends are now translated from and to the marker class transferred
across nodes by the GateReaderOperator and the RecordWriter. All
operators that expect grouped input only need to now about the
OperatorResult markers.

Also fixes an issue with the HDFSSink (input wasn't opened) and the
HashJoin operator (input 2 key set wasn't used).

Also adds some dataflow tests for compactified tasks as well as
Distinct, Difference, and Union.