Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Matrix Contract and Vector Contract are codependent. Ruby doesn't handle this well at all, so the contacts need to be forward-declared.