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.
I had to change this to
~~~{.cpp}
operator()(Range_&& futures) const
~~~
for ddemidov/amgcl@87cc7683f4130b9d06f049688036c7bfb6ec35c4 to work. With this change, the issue with HPX backend for amgcl is solved.