[libc++] Add __is_callable type trait and begin granularizing type_traits

`__is_callable` is required to ensure that the classic algorithms are only called with functions or functors. I also begin to granularize `<type_traits>`.

Reviewed By: ldionne, #libc

Spies: libcxx-commits, mgorny

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

NOKEYCHECK=True
GitOrigin-RevId: 08920cc04343e69ee8a56168a5911acddf40e6ba
diff --git a/include/module.modulemap b/include/module.modulemap
index cf74a07..0f07fd1 100644
--- a/include/module.modulemap
+++ b/include/module.modulemap
@@ -956,6 +956,9 @@
     header "type_traits"
     export functional.__functional.unwrap_ref
     export *
+
+    module integral_constant { private header "__type_traits/integral_constant.h" }
+    module is_callable       { private header "__type_traits/is_callable.h" }
   }
   module typeindex {
     header "typeindex"