[libc++] Implement std::boyer_moore{, _horspool}_searcher

This mostly copys the `<experimental/functional>` stuff and updates the code to current libc++ style.

Reviewed By: ldionne, #libc

Spies: nlopes, adamdebreceni, arichardson, libcxx-commits, mgorny

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

NOKEYCHECK=True
GitOrigin-RevId: 971e9c80e9660285e0620682f4e470a41967391f
diff --git a/docs/FeatureTestMacroTable.rst b/docs/FeatureTestMacroTable.rst
index 4815077..020ef2a 100644
--- a/docs/FeatureTestMacroTable.rst
+++ b/docs/FeatureTestMacroTable.rst
@@ -84,7 +84,7 @@
     ------------------------------------------------- -----------------
     ``__cpp_lib_bool_constant``                       ``201505L``
     ------------------------------------------------- -----------------
-    ``__cpp_lib_boyer_moore_searcher``                *unimplemented*
+    ``__cpp_lib_boyer_moore_searcher``                ``201603L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_byte``                                ``201603L``
     ------------------------------------------------- -----------------