Implement transpose and submatrix

* Submatrix returns a the submatrix of a given matrix deliniated by the given
  start and ending row, column positions. These inputs assume that row and column
  numbers start from one, which is different from internal implementation.
Implement fraction free gaussian elimination
Implement diagonal solve
Merge diagonal solve, Rename `gaussian_elimination` to `gauss_jordan_elimination`
Extend fraction free gaussian elimination for any matrix
ginac benchmark: print the time
Refactor `gauss_jordan_elimination` using row operations
Implement `pivoted_gaussian_elimination`

Rename `gauss_jordan_elimination` to `pivoted_gauss_jordan_elimination`
Add tests for `pivoted_gaussian_elimination`
Implement `fraction_free_LU`
Remove whitespaces
Add pivotlist to pivoted versions of gaussian elimination
Remove the LU decomposition implementation
Add references for some of the algorithms
Implement make install

Fixes #197.
Install Teuchos as well
Travis: Simplify .travis.yml

Do all the actual work in bin/test_travis.sh
No need to use semicolons anymore
Refactor Travis tests

Few changes:

    * Don't specify a variable if a default value is used
    * The various external library configuration tests are done in the first
      section.
    * Run most of the tests in out of tree builds, as those should be the
      default. Only run a few simple tests in the tree to make sure that things
      work.
    * The matrix section just tests a simple Release mode with various Python
      versions
Release is the default build, don't specify it