[CIR] Lower builtin_launder (#197252)
This patch introduces a cir.launder operation to represent a call to
__builtin_launder, which is an optimization barrier. This cir.launder
lowers directly to the LLVM-IR launder.invariant.group.
This patch also moves the existing check to see if a type needs
laundering to QualType from classic-codegen so it can be shared, however
the CodeGenOpt check is still left in codegen/duplicated between the two
implementations.