This patch implements the underlying mechanism for range adaptors. It
does so based on http://wg21.link/p2387, even though that paper hasn't
been adopted yet. In the future, if p2387 is adopted, it would suffice
to rename `__bind_back` to `std::bind_back` and `__range_adaptor_closure`
to `std::range_adaptor_closure` to implement that paper.
REVIEW NOTE
-----------------------------------
Once we agree on the direction, I will split it up into a few patches
that add the required helpers and add tests for everything in those
patches. The tests I have right now are the strict minimum I added to
make sure things worked.