[libc++] Explicitly reject `uniform_int_distribution<bool>` and `<char>`.

`uniform_int_distribution<T>` is UB unless `T` is one of the non-character,
non-boolean integer types (`short` or larger). However, libc++ has never
enforced this. D114129 accidentally made `uniform_int_distribution<bool>`
into an error. Make it now *intentionally* an error; and likewise for the
character types and all user-defined class and enum types; but permit
`__[u]int128_t` to continue working.

Apply the same static_assert to all the integer distributions.

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

NOKEYCHECK=True
GitOrigin-RevId: a3255f219a861fd91423def693e1b3ab3e012bec
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 86a9bc0..4228067 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -58,6 +58,13 @@
   namespace ``std``, it might be because one of your source files now needs to
   ``#include <algorithm>`` and/or ``#include <chrono>``.
 
+- The integer distributions ``binomial_distribution``, ``discrete_distribution``,
+  ``geometric_distribution``, ``negative_binomial_distribution``, ``poisson_distribution``,
+  and ``uniform_int_distribution`` now conform to the Standard by rejecting
+  template parameter types other than ``short``, ``int``, ``long``, ``long long``,
+  (as an extension) ``__int128_t``, and the unsigned versions thereof.
+  In particular, ``uniform_int_distribution<int8_t>`` is no longer supported.
+
 ABI Changes
 -----------