add caeser cipher method
update read me
fix matrix inverse/rref bugs with hacky solution

There existed a bug in which the matrix inverse method of row reduction
on the original matrix A with an identity matrix i s.t. row reducing [A
| i] would result in a proper identity but would also alter A in memory
even though a new matrix was initialized. This was because the
duplicate return matrix that was initialized was constructed as:

matrix = Matrix(m._data)

However, the matrix._data and m._data were still entangled and
operations on one would affect the other. This was solved by parsing
m._data into a valid string argument for the Matrix object constructor.
This prevented the two matrices from being associated in memory and
solved the issue.
update read me

1. alter disp() method to print 5 decimal places instead of 3 to
increase reading accuracy.

2. alter rref() function to return the reduced row echelon matrix
rather than procedurally altering the original matrix