These functions creates objects representing matrices with ability to cache its inverse, removing the need to re-calculate the inverse again if it has been calculated in the past