Arithmetic contracts

Created the arithmetic contracts. test_exp fails because it tries to call the scalar * because matrix identity function creates a scalar. 

Problems encountered with the sub and add operations that have not yet been fixed. 
Running the following:
irb
```ruby
require "matrix"
require "matrix_test"
abc = Matrix[[1,2],[3,4]]
abc + 1 # this works and calls the preconditions
abc + 1 # this does not call the preconditions
abc - 1 # this does not call the preconditions
ghi = Matrix[[1,2]]
ghi - 1 # this does not call the preconditions either
```
This is still confusing.  Floats also respond to modulo, so the assertion text doesn't really make sense.  But matrices can be multiplied by floats anyway, so I guess it's just the assertion text that's confusing.