[libc++] Assume that __wrap_iter always wraps a fancy pointer.
Not only do we conscientiously avoid using __wrap_iter for non-contiguous
iterators (in vector, string, span...) but also we make the assumption
(in regex) that __wrap_iter<_Iter> is contiguous for all _Iter.
So __wrap_iter<reverse_iterator<int*>> should be considered IFNDR,
and every __wrap_iter should correctly advertise contiguity in C++20.
Drive-by simplify some type traits.
Reviewed as part of https://reviews.llvm.org/D102781