Prevented contracts from recursively calling each other, added support for optional block arguments, and switched several relative requires to require_relative.
Removed the contraint that method invariants be the innermost contract of a method.
Undid erroneous change - the block cannot be added to the args, since that will cause an error if the contract invariant is expecting a certain number of args - even if the block is not present, nil will be passed in, leading to an arity mismatch.
Replaced the pair of method calls defining the 'evaluating_contract' attribute with a single call to 'attr_accessor'.
Merge pull request #5 from isupeene/finalize_contracts

Got contracts ready to go.