This function creates a special "matrix" object that can cache its inverse