implements unique algorithm

I had this problem:

```c++
auto rng = as_range(container);
unique(rng); // rng& OK
unique(as_range(container)); // rng&& -> this should work
const auto rng2 = as_range(container);
unique(rng); // rng const& -> this should fail
```
I decided to use `Rng&&` but reference collapsing will allow `Rng const&` so I decided to delete this explicitly. I sincerely hope there is a better way to enable `Rng&` and `Rng&&` for template functions without enabling `Rng const&`.