extends Params::Validate to support checking for complex dependencies between parameters