[libcxx] Implement P1956 rename low-level bit functions

Implements P1956: On the names of low-level bit manipulation functions.

Users may use older versions of libc++ or other standard libraries with the old names. In order to keep compatibility the old functions are kept, but marked as deprecated.

The patch also adds a new config macro `_LIBCPP_DEPRECATED_MSG`. Do you prefer a this is a separate patch?

Reviewed By: ldionne, #libc

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

GitOrigin-RevId: 1a036e9cc82a7f6d6f4675d631fa5eecd8748784
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 6079b6f..719115f 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -49,3 +49,10 @@
   in both libc++ and libc++abi, which is technically an ODR violation. Also
   note that we couldn't decide to put the operators in libc++ only, because
   they are needed from libc++abi (which would create a circular dependency).
+- During the C++20 standardization process some new low-level bit functions
+  have been renamed. Libc++ has renamed these functions to match the C++20
+  Standard.
+  - ``ispow2`` has been renamed to ``has_single_bit``
+  - ``ceil2`` has been renamed to ``bit_ceil``
+  - ``floor2`` has been renamed to ``bit_floor``
+  - ``log2p1`` has been renamed to ``bit_width``