Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Yeah, having a default value after a variable length argument list won't work.