campaigns: add GitLab support
Created by: LawnGnome
This PR adds GitLab support to campaigns. It mostly closes #11586 (closed) (probably enough to actually close it, and we can open another issue to track the remaining bits.)
Things that are intentionally not included in this PR, but I expect to add in the near future:
- Webhook support, including documentation for setting up webhooks on GitLab.
There are some compromises in here to enable older versions of GitLab that we still support to be usable. Primarily, this is that we can't use the GraphQL API, which requires GitLab 12.0: while the GraphQL API is incomplete at present, using it would give us better label support and allow us to retrieve notes, pipelines, and merge requests in general more efficiently.
Note that no additional scopes are required for GitLab support to work, since the already-required api
apparently covers a multitude of sins.