Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
It's inherited from Matrix.  If we don't deliver from Matrix, we can just mix in the coercion helper.