Created object to cache the inverse of a matrix

These functions create a special object (a list) containing a matrix,
cached version of it's inverse as wee as functions that access said
matrix and inverse.  This cached inverse will be returned if the inverse
has already been calculated, hence preventing the potential costly
recalculations of the matrix