Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Here you check that the args are valid but you do not do this for the MatrixBuilder