The return value for both of these algorithms is specified as
`{last, result - N}` for the overloads in namespace `ranges`.
But the current implementation instead returns {first, result - N}.
Also add both algorithms to the relevant "robust" tests.
Pre-existing: Could you make copy and move consistent w.r.t. using __reverse_range?