Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Is this the ensure that you say isn't getting called after a while? Is it after multiple MiniTest::Assertions are thrown or just after a single MiniTest::Assertion is thrown. If you are just running the tests it may seem like it is after multiple when it is in fact after only 1. If it is after 1 that means the ensure is never being called and that problem is probably easier tackled than it just mysteriously failing after multiple assertions have been thrown.