[libc++] Add __detected_or_t and use it to implement some of the allocator traits aliases (#115654)

This simplifies the implementation a bit, since we don't need a lot of
the `__has_x` classes anymore. We just need two template aliases to
implement the `allocator_traits` aliases now.

GitOrigin-RevId: 7ae61a36f94679370b9c1b4b1a13999d23d38a0c
5 files changed