Fill in function definitions

makeCacheMatrix defines the list representation of a matrix and its inverse
cacheSolve returns the cached inverse (if it exists), or calculates the inverse and caches it