Register a settings class with the switcher. Can be passed the settings
        class to register or be used as a decorator.

        :param settings_class: The class to register with the provided
                conditions.
        :param *simple_checks: A list of conditions for using the settings
                class. If any of the values are falsy, the class will not be
                used. If any of the values are callable, they will be called
                before evaluating.
        :param **conditions: Values to check. The key specifies which of the
                check functions (registered with ``add_check``) to use; the
                value is passed to the check function.

def register(self, settings_class=NoSwitcher, *simple_checks,
                 **conditions):
        """
        Register a settings class with the switcher. Can be passed the settings
        class to register or be used as a decorator.

        :param settings_class: The class to register with the provided
                conditions.
        :param *simple_checks: A list of conditions for using the settings
                class. If any of the values are falsy, the class will not be
                used. If any of the values are callable, they will be called
                before evaluating.
        :param **conditions: Values to check. The key specifies which of the
                check functions (registered with ``add_check``) to use; the
                value is passed to the check function.
        """
        if settings_class is NoSwitcher:
            def decorator(cls):
                self.register(cls, *simple_checks, **conditions)
                return cls
            return decorator

        available_checks = self.checks.keys()
        for condition in conditions.keys():
            if condition not in available_checks:
                raise InvalidCondition(
                    'There is no check for the condition "%s"' % condition)

        self._registry.append((settings_class, simple_checks, conditions))