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 get `36` in the diagonal instead of `-10`. Also, there is a remark after the algorithm saying there are redundant steps in the algorithm. I wonder what they are. I think it will be better to look for the algorithm elsewhere and see if there are any differences with the one on this paper. I'll see to it.