Fix for ReduceOperator mutable object return bug.

This PR proposes a fix for #563 and is a rebased version of PR #578.

Performance implications should be tolerable. For Sort-Group strategy only the first value of a group is copied. For Hash-Aggregate strategy (not supported yet), there will be no performance implications.

The fix assumes that the object of the first input value (```val1```) of a ```T reduce(T val1, T val2)``` may be returned and that the object of the second input value (```val2```) may NOT be returned.