Got contracts ready to go.

@bsoetaer We should be ready to write contracts now.
Yeah, I don't like leaving `evaluating_contract` false for the whole method either, but if the method invariant is the innermost invariant, as I mentioned in the `included` method, then it shouldn't be a problem.  If we do as you suggest, then the second half of the method invariant will always be called, even if it wasn't supposed to be.  I can't think of any way simpler than this, if we added a setter for `@evaluating_contract`:
```ruby
if instance.evaluating_contract?
    result = method.bind(instance).call(*args, &block)
else
    instance.evaluating_contract = true
    contract.bind(instance).call(*args) {
        instance.evaluating_contract = false
        result = method.bind(instance).call(*args, &block)
        instance.evaluating_contract = true
    }
    instance.evaluating_contract = false
end
```
Although it would be nice to not need to care about the order in which the contracts are called...