Move foreman LDAP functionality to ldap_fluff

Most logic comes from here: https://github.com/theforeman/foreman/blob/develop/app/models/auth_sources/auth_source_ldap.rb 

and https://github.com/theforeman/foreman/pull/529 , which this PR is meant to facilitate.
What about the exception names? These names seem complicated to me Can we share Unauthenticated error between backends? Or at least choose better organization.