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
Actually, we can do the test you mention by using `diagonal solve`