Added in sign in steps.

Sign in steps provide you with fine-grained control over the process of
signing in a user. Each step is run in order and will hand the session
off to the next step in the process. Any step may also choose to fail
the sign in process and provide a message explaining why. Additionally
you could immediately determine the sign in process was a success and
skip running additional steps.