[libc++] Granularize __string

Reviewed By: ldionne, #libc

Spies: libcxx-commits, mgorny

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

NOKEYCHECK=True
GitOrigin-RevId: 976f37050dbd38aea69a91a31b2a15a19cab6716
diff --git a/include/module.modulemap.in b/include/module.modulemap.in
index b89983b..231141d 100644
--- a/include/module.modulemap.in
+++ b/include/module.modulemap.in
@@ -987,13 +987,15 @@
     header "string"
     export initializer_list
     export string_view
-    export __string
+    module __string {
+      module char_traits           { private header "__string/char_traits.h" }
+      module extern_template_lists { private header "__string/extern_template_lists.h" }
+    }
     export *
   }
   module string_view {
     header "string_view"
     export initializer_list
-    export __string
     export *
     module string_view_fwd { private header "__fwd/string_view.h" }
   }
@@ -1169,7 +1171,6 @@
     @requires_LIBCXX_ENABLE_LOCALIZATION@
     private header "__std_stream" export *
   }
-  module __string            { private header "__string"            export * }
   module __threading_support {         header "__threading_support" export * }
   module __tree              {         header "__tree"              export * }
   module __tuple             { private header "__tuple"             export * }