Refactor code to make selecting Auth order easier

This refactor makes it easier to choose which auth mechanism
to do first and will allow for decisions like if the username
starts with a corporate domain, choose LDAP first.