Implementing caching the inverse of a matrix