I think this is more complex than it needs to be for the moment. Let's simplify it something like this:

```
if section in config_validators:  # A dict keyed by name
    config_validators[section].check(config[section])
elif section.startswith('Shortcut '):
    config_validators['Shortcut'].check(config[section])
else:
    ...
    raise InvalidConfig(err_msg)
```

I don't think we're going to add a lot of complexity in section names any time soon, and we can always refactor later if we do.