Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
I believe this is the same but less:

```ruby
@@iterators = Hash[[
:all,
:diagonal,
:off_diagonal,
:lower,
:strict_lower,
:upper,
:strict_upper
].map{|s| [s, ("iterate_" + s.to_s).to_sym] }