Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Note that the sparse vectors are not hashes, but rather single compressed rows.  If we had a sparse vector of sparse vectors, that's very similar to a compressed row format, and we could still implement efficient sparse zipping algorithms.  Of course this violates the vector contract, but if we switch to the decorator pattern for contracts, we can use the undecorated vector for this.