Right now the LoginController has all the authentication which is kind of a mess. Further, the upcoming basic access authentication has to reuse this code. Thus AuthChain::authenticate() is introduced to handle both cases. refs #9660