Author a matrix class and utility functions

Create a matrix class `SMatrix` that templates out both type, and
dimensions, the function `Transpose` that transposes the matrix class,
and the function `GetIndex` that enforces consistent indexing through
row-major order.

The matrix class forms the basis for the majority of the library by
templating out type, and dimension the library focus on the mathematical
processes.

Ideally the function `GetIndex` should be kept private.