Goes with PR #1161, and completes the space for mul() implicit truncations. Note that the v*v and scalar cases are already handled by existing code.
HLSL truncates the vector, or one of the two matrix dimensions if there is a dimensional mismatch in m*v, v*m, or m*m. This PR adds that ability. Conversion constructors are added as required.