[libc++] Don't assume that string_view::const_iterator is a raw pointer

Our implementation of std::format assumed that string_view's iterators
were raw pointers in various places. If we want to introduce a checked
iterator in debug mode, that won't be true anymore. This patch removes
that assumption.

Differential Revision: https://reviews.llvm.org/D138795

NOKEYCHECK=True
GitOrigin-RevId: 1562e5149174b86c8f9d0b4d2ec0101fe67dddcb
diff --git a/include/module.modulemap.in b/include/module.modulemap.in
index 6bc64be..a128483 100644
--- a/include/module.modulemap.in
+++ b/include/module.modulemap.in
@@ -1012,7 +1012,10 @@
       module permutable            { private header "__iterator/permutable.h" }
       module prev                  { private header "__iterator/prev.h" }
       module projected             { private header "__iterator/projected.h" }
-      module readable_traits       { private header "__iterator/readable_traits.h" }
+      module readable_traits       {
+        private header "__iterator/readable_traits.h"
+        export __iterator.iterator_traits
+      }
       module reverse_access        { private header "__iterator/reverse_access.h" }
       module reverse_iterator      { private header "__iterator/reverse_iterator.h" }
       module segmented_iterator    { private header "__iterator/segmented_iterator.h" }