Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
Actually that other weird behaviour I detailed can probably be explained by calls to method missing while the first call is being evaluated. Call method_missing and the begin is started. With both uncommented begin calls method missing again and goes to the else statement which asserts false so the ensure block is called and then BOO is printed. With BOO commented out the same thing happens but the ensure block does not create a new error like before or handle the old error so after the bool is set back to false then it prints the ABC line with both values true because those were the values when the ABC line was encountered but not the current state. Summary is that I think the main problem is the if condition is never being true so contracts are actually never called.