Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Have to go to bed but I could not get this if statement to evaluate to true so I think the contracts were in fact never called. Only way I got it to work was by putting if @@enable_contracts && !@@evaluating_contracts and put @@enable_contracts = true higher up. tried changing to @enable_contracts and setting that to true and just setting enable_contracts to true but enable contracts was always blank. Btw I was testing by putting in assert(false,"Useful error message with values") wherever I needed to check something. 

Other weird behaviour I got: once I hacked the if statement to work with an @@enable_contracts variable I put an assert(false,"BOO") inside the ensure after the setting of the variable to false and also an assert(false,"ABC") in the else statement. With both asserts uncommented I got the 47 test failures all printing out BOO so the ensure was called for all of them. But when i commented the BOO line then I would get 47 ABC statement failures. Then I printed out the value of the variables that are used in the if statement. With BOO line active they were always true and false like they should be. But with Boo line not active they were always true and true which was not right obv.

Might investigate more tomorrow morning.