implement makeCacheMatrix() and cacheSolve(), a cached version of solve()