[libc++] Granularize <functional> includes

Reviewed By: Mordante, #libc

Spies: libcxx-commits, miyuki

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

NOKEYCHECK=True
GitOrigin-RevId: faef447e72a5c63dfb12bb7b02d44c3c916d31cd
diff --git a/include/valarray b/include/valarray
index d79b0b2..fc044f4 100644
--- a/include/valarray
+++ b/include/valarray
@@ -350,9 +350,14 @@
 #include <__algorithm/unwrap_iter.h>
 #include <__assert> // all public C++ headers provide the assertion handler
 #include <__config>
+#include <__functional/operations.h>
+#include <__memory/allocator.h>
+#include <__memory/uninitialized_algorithms.h>
+#include <__utility/move.h>
+#include <__utility/swap.h>
 #include <cmath>
 #include <cstddef>
-#include <functional>
+#include <functional> // TODO: Remove this include
 #include <initializer_list>
 #include <new>
 #include <version>