WIP: Support a specific group for LDAP group sync

Closed Drew Blessing requested to merge dblessing/gitlab-ee:group_sync_pass_groups into master

Fixes https://gitlab.com/gitlab-org/gitlab-ee/issues/399

What does this MR do?

Allow LDAP Group Sync to accept a single or set of Group IDs to sync.

This also replaces the exclusive lease with a state machine.

Are there points in the code the reviewer needs to double check?

All of it 😉 But especially the migrations. To conform to all of the migration style requirements I had to create 4 distinct migrations. I tested them up and down multiple times and it seems good but I'm not 100% confident in it.

Why was this MR needed?

This paves the way for further group sync improvements such as https://gitlab.com/gitlab-org/gitlab-ee/issues/400. The exclusive lease change was necessary to facilitate https://gitlab.com/gitlab-org/gitlab-ee/issues/400 and because exclusive lease made debugging LDAP problems nearly impossible.

Does this MR meet the acceptance criteria?