Moved invariants functionality into the Contracts module, and added a generic way of adding new contracts.  This simplifies the expression of invariants such as 'const'.  Also factored out a generic error message in matrix_contract.rb.
Fixed a type in contract.rb
Fixed another typo in contracts.rb
Missing file 'contract_symbols.rb' from previous commits.
Changed contract suffixes from methods to constants.
Merge pull request #3 from isupeene/improved_const_invariants

Improved const invariants