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
```
Yeah right now I am doing responds to modulo and remainder but checking for numeric might be better in this case. I changed stuff you commented on but now that the contracts work better I ran into some other issues that the tests now show now that the contracts are all being called.