Following up on https://github.com/dotnet/runtime/pull/98561: 1) Ensure relational comparisons aren't folded. 2) Ensure unary operations aren't folded. 3) Ensure HWIs aren't folded. 4) Add asserts. 5) Unify with `ImmedValCanBeFolded`. 6) Clean up code around casts and bitcasts. 7) Delete assertion propagation workarounds.