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

@bsoetaer 
I think the postcondition should make guarantees about the result as well, when possible.  That the matrix wasn't altered is a good postcondition, but I don't think it will be easy to express such a postcondition.  An alternative could be to represent contracts as a wrapper around the function (similar to a python decorator), rather than as two separate functions.  In that case, the wrapper could check the preconditions and make a clone of the matrix, then confirm that the two matrices are identical after the method has ended.