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.