completed assignemnt with functions to cache the inverse of a matrix