[libc++][ranges] revert join_view::iterator and sentinel to be in-class
- inside the __iterator, having a member typedef using flag = __iterator and checks same_as<Tp::flag, Tp>. This way we can detect the class is indeed __iterator rather than a derived class.
This seems quite complicated. Is there a reason not to use __is_primary_template instead?