[cir] Refine cir::CastOp semantics for int <-> float casts (#200005)
Int-to-float and float-to-int casts in cir::CastOp are lowered directly
to their LLVM equivalents. Update the verifier to reflect this semantics
and ensure that, for vector casts, the source and destination vectors have
the same length.
This lets the CIR verifier reject invalid casts earlier, instead of relying
on errors reported later at the LLVM IR level.