[libc++][hardening] Introduce assertion semantics. (#149459) Assertion semantics closely mimic C++26 Contracts evaluation semantics. This brings our implementation closer in line with C++26 Library Hardening (one particular benefit is that using the `observe` semantic makes adopting hardening easier for projects). GitOrigin-RevId: 3eee9fc2c4d1973904b1a26fa96a8c7473ef6a5e