[libc++] Replace `__compressed_pair` with `[[no_unique_address]]` (#76756)

This significantly simplifies the code, improves compile times and
improves the object layout of types using `__compressed_pair` in the
unstable ABI. The only downside is that this is extremely ABI sensitive
and pedantically breaks the ABI for empty final types, since the address
of the subobject may change. The ABI of the whole object should not be
affected.

Fixes #91266
Fixes #93069

GitOrigin-RevId: 27c83382d83dce0f33ae67abb3bc94977cb3031f
27 files changed