Fixes #7369 - External user groups update on login

This forces external user groups associated to the auth source of the user logging in to update, so that users get their external permissions updated on login.
Also there are a few unit tests that were large and I tried to tidy that up.
While this is not introduced by this PR, we have an issue here. Since we load only those groups that the user is assigned in LDAP we don't handle unassignment correctly. Suppose we have user in group A and B which are mapper to external groups of same name. Now admin removes user from external group B in LDAP. User logs into foreman and LDAP tells us the user is only in group A so we refresh only A. This results in user being assigned to B (it was not touched at all) until admin manually refresh the group B in foreman.

To solve it we should look at external groups (as we do now) plus all internal groups that user is assigned to. We should do union of groups found these way to avoid double refresh.