Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Yeah, I had assumed that assert_raise would succeed if any exception is thrown, but it doesn't seem to work like that.  Asserting that some exception is raised is just defensive testing anyway.