Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Hack but could do old_upper = upper, upper = lower; lower = old_upper. newMatrix = initialize_copy(self). lower = upper; upper = old_upper; return newMatrix