Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Well I see this is used for vector addition. If the non_zero selector was used then this would return an incorrect result in some cases.