TEXTURE: Implement MipMap using std::vector instead of raw fields.
MATHS: Use vector types whenever possible.

Replace any separate x,y,z,w and width,height,depth tuples and any
matrixes by their equivalent types from GLM library.

Keeping coordinates separate does not make sense, as they have a
common semantic. Using vector types instead provide more semantic,
smaller code with less parameters to pass, and built-in vector
and matrix operations.

The GLM library is a well-written template math library, based on
a standardized specifiction (the GLSL/OpenGL math functions), and
provide all the usual vector/matrix operations.