[libc++] Add the C++17 <memory_resource> header (mono-patch)

This patch is the rebase and squash of three earlier patches.
It supersedes all three of them.

- D47111: experimental monotonic_buffer_resource.
- D47358: experimental pool resources.
- D47360: Copy std::experimental::pmr to std::pmr.

The significant difference between this patch and the-sum-of-those-three
is that this patch does not add `std::experimental::pmr::monotonic_buffer_resource`
and so on. This patch simply adds the C++17 standard facilities, and
leaves the `std::experimental` namespace entirely alone.

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

NOKEYCHECK=True
GitOrigin-RevId: 243da90ea5357c1ca324f714ea4813dc9029af27
diff --git a/include/module.modulemap.in b/include/module.modulemap.in
index 35356a4..d224c5b 100644
--- a/include/module.modulemap.in
+++ b/include/module.modulemap.in
@@ -882,6 +882,19 @@
       module voidify                         { private header "__memory/voidify.h" }
     }
   }
+  module memory_resource {
+    header "memory_resource"
+    export *
+
+    module __memory_resource {
+      module memory_resource              { private header "__memory_resource/memory_resource.h" }
+      module monotonic_buffer_resource    { private header "__memory_resource/monotonic_buffer_resource.h" }
+      module polymorphic_allocator        { private header "__memory_resource/polymorphic_allocator.h" }
+      module pool_options                 { private header "__memory_resource/pool_options.h" }
+      module synchronized_pool_resource   { private header "__memory_resource/synchronized_pool_resource.h" }
+      module unsynchronized_pool_resource { private header "__memory_resource/unsynchronized_pool_resource.h" }
+    }
+  }
   module mutex {
     @requires_LIBCXX_ENABLE_THREADS@
     header "mutex"