Added the Matrix unit tests from the Ruby source code, and modified them to accept any callable matrix_factory, in place of the original Matrix class.  Adding our contracts to the Matrix class, then running the test seems to have revealed an error which results in a Stack Overflow for every test.
Fixed a couple of errors which would lead to infinite recursion, and fixed the contract invariant decorator to return the correct result.  The first problem causing infinite recursion was that the attribute accessor for 'evaluating_contract' and 'evaluate_contract' themselves were getting the class invariant added to them.  The second issue was that the reference to 'evaluating_contract' wasn't referencing the correct object.  Changing it to reference 'self' solved this issue.
Merge pull request #6 from isupeene/matrix_tests

Added matrix tests from the Ruby source, and fixed a few of the issues with the contracts that they discovered.