Caching the Inverse of a Matrix

Set of functions that allows taking a square matrix, computing inverse
of it and then storing the results for future use. Function will check
to ensure that if the input matrix has not changed, it will return the
inverse from cache or else it will compute fresh