Fix type compatibility stuff.
Fix type compatibility stuff.

Vec4 and Quat now work anywhere a Vec3 is expected -- only the first
three components of either are read or written to. Quat and Vec4 are
more or less compatible, with the exception of things that expect Quats
as a way of representation rotations (namely Mat3 and Mat4).

Mat3 and Mat4 arrays will now implicitly convert from Mat3 to Mat4 and
vice versa when storing a value. When fetching, output still has to be
of the same type.

nilium/ruby-snowmath,nilium/ruby-snowmath