Implement Matrix functions

This PR implements:
* Submatrix
* Transpose
* Diagonal solve
* Fraction free versions of Gauss elimination and Gauss Jordan elimination

#### TODO
- [x] Implement pivot list in pivoted versions of the elimination algorithms
I see, you would obtain the inverse matrix. That would be useful to have as well for matrix inversion.