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.
Yeah, I was dubious about enabling the class invariant for every single class method because just looping through every single method of the type and adding the invariant to it would certainly result in cyclic calls.  For example, `invariant` itself is an instance method of the class, by virtue of including `MatrixContract`, as are all the `assert` methods, some of which are certainly going to be used in the invariant.

Now that I think of it, the invariant will probaby be using functions of the class which _do_ have pre- / postconditions, which themselves will be calling the invariant...  Maybe we could do something like this:

```ruby
@invariant_running = false
def invariant
  return if @invariant_running
  @invariant_running = true
  # Do other invariant stuff without worrying about infinite recursion.
  # ...
  @invariant_running = false
end
```

Maybe even the `Contract` module itself could search for the `invariant` method and decorate it in this way.