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.
Okay, this commit looks good then. Only concern is the issue from the last commit where the class invariant is only added properly when the function has both a pre and post condition function but this isn't a big deal if we just ensure that all the functions have those.