Fix dataflow to handle properly ranges of futures

This PR makes sure that futures that are passed to `dataflow` can be safely overwritten. This makes `dataflow` semantics similar to those of `when_all` etc. This fixes #1336: dataflow needs to hold onto futures passed to it.