[FLINK-758] Add initial value to GenericReduce and adjust AllReduceDriver

This is an initial version of introducing an initial value to the reduce functions. Thanks to @fhueske for suggesting to add the initial value to `GenericReduce`.

It is only implemented for `AllReduce` (ungrouped reduce). Please give feedback. If everything is OK, I would continue (~ 1 hr) with the remaining reduce variants (grouped reduce, ungrouped groupreduce, and grouped groupreduce).