Updated ranges::for_each to take forwarding ref Rng&& instead of Rng&

ranges::for_each should accept R-value ranges, to support use-cases such as:

    ranges::for_each(ranges::view::ints(1,10),[](int x){ std::cout<<x<<std::endl;});

The proposed change is to change for_each to take a [forwarding reference](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4164.pdf) Rng&& instead of an L-value reference Rng&.

Maybe `for_each` could return `void` when its an rvalue. Also, perhaps, when a view is passed, the base iterator could be returned instead?