Geo scheduler worker refactoring
Noted while working on https://gitlab.com/gitlab-org/gitlab-ee/issues/5555
At some point, we significantly refactored our schedulers to have a fairly complex inheritance hierarchy. We didn't refactor the specs at the same time, so a great deal of functionality which moved into the superclasses doesn't have tests in the superclasses.
We could resolve this by moving (and potentially deduplicating) the tests. We could also consider replacing the inheritance hierarchy with something else - a service of some kind, perhaps.