Shifted all of the numerical dispersion code to use the internal matrix power function.
Instead of using the numpy.linalg.matrix_power() function, the relax
lib.linear_algebra.square_matrix_power() function is being used instead. This allows the code to
run on many older systems, as the numpy function is relatively new.