Storage and Organization aware matrix

The matrix class is now Storage (the underlying storage type) and Organization (row major or column major) aware. This means that both of them can be specified in the template arguments of the matrix class.

The algebraic member functions and functions have been removed (in order to be added in the future to other header files.