Attempt at #3022 - More complex implementation

As per #3022 I'm trying to add procs to the gitlab configuration that adjust how LDAP attributes are mapped to users. There are two implementations and pull requests because I'm unsure which is better and I should go down the route of writing tests for. The other pull request is #3646.

In this implementation I thought the create from omniauth function was getting somewhat complex. Tried to pull some of the more complex stuff out into its own helper class as can be seen. Quite a bit of code removed and then a "large" class added to try and simplify code and interface.

Unsure if it is better or not, hence creating the other implementation with less changes.

/cc @senny