Added cooldownDuration to CompleteContract; refactor ContractRequirement.MeetsRequirement to take the contract instead of contract type as a parameter.