Initial submission - cacheSolve and makeCacheMatrix according to instructions
makeCacheMatrix now handles caching itself
Go back to initial implementation

- cacheSolve retrieves the cached solution or inverts the matrix and
  stores the cached version

- makeCacheMatrix stores and retrieves the cached inverse, but doesn't
  invert it on request