Refactor GitlabCluster implementation
In !5401 (merged) an initial implementation was made to implement a single command that could be used to promote a Geo site as primary.
We now need to refactor the code and make it easier for the expected growth/usage.
The goals of the refactor is to decouple the GitlabCluster usage from the cookbook where it is implemented and require close to none additional code to use that in cookbooks.
It should also be ready to when we add Consul, so no API change is needed (or very minimal change is required)
Edited by Gabriel Mazetto