Add functionality for list-backed matrix object; add caching of matrix inverse