GPU/Math3D: Replace * and % operators with the less ambiguous function names Dot and Cross.
GPU/Math3D: Add some getter functions to allow indexing Vec3 objects like colors or texture coordinates.
GPU/Math3D: Replace Vec3::v array with a method called "AsArray".
GPU/Math3D: Replace ambiguous Vec3 constructors with static methods returning a new Vec3 object.

Possibly fixes a bug or two because the old code was using the constructors incorrectly.
GPU/Math3D: Change Vec3 to allow for arbitrary component base types.
GPU/Math3D: Add a Vec4 class.
GPU/Math3D: Add a Vec2 class.
GPU/Math3D: Add component swizzlers for Vec2, Vec3 and Vec4.
GPU/Math3D: Rename VecXRef::Mul to the star operator.
GPU/Math3D: Support converting Vec3 and Vec4 objects to u32 color values.
GPU/Math3D: Add methods for casting vectors.
GPU/Math3D: Replace VecX::Lerp methods with more general and clearer Lerp and LerpInt template functions.
GPU/Math3D: Add a 3x3 matrix class.
GPU/Math3D: Add a 4x4 matrix class.
Merge pull request #2986 from neobrain/math3d-extensions2

Math3d extensions2