Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
We aren't going to remove the contacts - we're going to disable them.  Rather than removing the contacts, we can reimplement them with the decorator pattern.  It will be easy to create a simple decorator class that does what we need.  Of course, it won't be able to add the contract assertions to the built-in matrix class, but that was just for testing our own contacts anyway.