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.
Might work. 

Kind of off topic but... The deeper and deeper we go into this I start to wonder about the assignment and how we are supposed to be using these contracts. The way we are making them is tying them into the inherent functionality of our code with some of the checks. The contracts make for more defensive programming but are adding overhead to the regular runtime of our code.

For instance I am having trouble coming up with postcondition code that doesn't just replicate what the function itself will do and if I just do what the function will do then the postcondition is more than doubling the runtime. The preconditions are usually useful and would need to be included in the main code if the contracts weren't inherent to the code but the others feel like they are just overhead.

Maybe the contracts are supposed to be a thing that can be added or removed from the code at will, sort of like a test suite? What do you think?