Improved const invariants

@bsoetaer 
Added new functionality for defining commonly used contracts in a single line.  'const' and 'require_square' are now implemented using this system.
The add functions will be called when the contract module, in this case `MatrixContract`, is interpreted.  The `included` function in the `Contract` module won't actually have been called at that point, because `MatrixContract` _extends_ `Contract`.  That means that the `included` method won't get called, but it _will_ get pulled into the scope of `MatrixContract` and get called when `MatrixContract` is included in another class.  By this time, the whole `MatrixContract` class has been interpreted, and its contracts are set in stone.