Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Fixed.  It's disconcerting that the test coverage of the ruby standard library is so poor.