Added the initial matrix contracts file with a sample pre- and postcondion

@bsoetaer 
'result' is a bool, and is intended to represent the result of the function.  So the usage would be:

```ruby
def diagonal?
    diagonal_precondition
    result = # ... compute result
    diagonal_postcondition(result)

    return result
end
```

So this is what we guarantee to the user - that the result of that universal quantifier is the same as the result we return to them.