WIP: Add LDAP failover support

Open Drew Blessing requested to merge dblessing/gitlab-ce:ldap_failover into master

What does this MR do?

Add support for LDAP server failover. Closed gitlab-org/gitlab-ee#139.

It introduces an LDAP configuration key called hosts. Users can specify a server set with the syntax ['primary-ldap.example.com:389', 'failover-ldap.example.com:3890']. The first item will be used first in all cases while the second will be failover. The existing separate host and port configurations will continue to work if hosts is not set.

NOTE: gitlab_omniauth-ldap1.3.0 needs to be released before this is merged.

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


Why was this MR needed?

Many organizations want to have LDAP failover support. Net::LDAP supports it but omniauth-ldap and GitLab have not until now. It's simple to add because the library supports it. I chose to include this in CE because it would cause unnecessary merge conflicts if we try to separate the feature. It's also not a lot of effort so we should just not cause ourselves headaches for CE-EE merges. Also, it's nice to give this feature to the community.

Does this MR meet the acceptance criteria?

What are the relevant issue numbers?