Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
No. Sparse matrices should have the same default iteration behavior as full matrices.