[Simd::implCast()] Cast between simd types of different implementations
This is needed for the planned retirement of Simd::Index
, see #135 (closed).
This is particularly useful for masks, which often know the type they were derived from. This can become a problem when doing a conditional operation e.g. on some floating point vector type, but with a mask derived from some index vector type -- in particular if that index type is not supported natively and the implementation defers to some other implementation.