batches: GitLab fork support
Created by: LawnGnome
This PR implements GitLab support for forks. This is a little more convoluted than the other code hosts because GitLab's API is suboptimal — we can't access the source project directly on merge requests, merge requests are created on the wrong side of the relationship, and forks return 409 if the fork already exists.
Some day we'll get to use the GraphQL API and I'll be happy. Happier. Something like that.
Part five of #17879.