Fixed an issue that Contract.Invariants actions were unavailable on structs.
Extracted base class for Requires context actions. Minor refactorings.
Added generic version of Contract.Requires