Make MergeService idempotent
This came out of https://gitlab.com/gitlab-org/gitlab/issues/32185#note_220152835. We should: 1. Add tests to ensure `MergeService` is idempotent 1. `SquashService` should check whether the merge request is merged (e.g. `MergeRequest#merged?`).
issue