Got contracts ready to go.

@bsoetaer We should be ready to write contracts now.
Basically the problem is that currently the @evaluating_contract variable is true while the function is being executed so any functions that are called inside the function will not have their contracts evaluated. Problem with my solution is that it creates the possibility of infinite loops between contracts as a contract may actually be getting evaluated and then it gets set to false.

One problem that exists with both solutions that we can't live with and I just noticed is that the current implementation stops methods from calling other methods. 
Example: (Assume both methods have a method invariant defined)
> def method1
>    method2
> end
>
> def method2
>    #some code
>end

If you call method1 its method_invariant will be called and @evaluating_contract will be set to true. Then method1 tries to call method2, (@evaluating_contract still true). Method2's method invariant is called. evaluate_contract is called in method2's invariant but since @evaluating_contract is true evaluate_contract just returns and method2 does not execute at all and the state is corrupted.