CAS-1238 Demonstrate new AuthenticationHandler features in LDAP module.

The LDAP authentication handlers have been modified to implement the new
AuthenticationHandler interface. A pluggable facility,
AuthenticatedContextCallback, was developed to demonstrate how abitrary
LDAP operations can be executed on the authenticated DirContext and the
results passed up the API stack via the returned HandlerResult. The
following implementations were provided to demonstrate important use cases:

1. PrincipalResolvingContextCallback - lightweight principal resolution
2. SearchingPasswordExpirationCallback - search-based password expiration
   policy checking (compare with LdapPasswordPolicyEnforcer)
3. PasswordPolicyCallback - ppolicy password expiration checking
CAS-1238 New AuthenticationException conveys authn details to Web tier.

The new org.jasig.cas.authentication.AuthenticationException class contains
details about handler successes and failures and is thrown by
AuthenticationManagers to inform higher levels.
CentralAuthenticationService now explicitly declares this exception any time
a credential may be authentication in order to directly link the
authentication tier with the Web tier; this provides the opportunity to
route high-level behavior based on authentication details. For example,
custom error handler component could provide functionality for
LPPE or MFA workflows based on exceptions coming out of the authentication
tier.
CAS-1238 Integrate new authentication API error handling into webflow.

Define AuthenticationExceptionHandler webflow action to decouple error
handling from the mechanics of authentication (AuthenticationViaFormAction)
to allow for pluggable strategies for error handling such as supporting
additional classes of authentication errors, extending existing LPPE
workflows, and developing new workflows for authentication failures.

SimpleTestUsernamePasswordAuthenticationHandler was extended to throw
well-known exception classes when pre-defined user names attempt to
authenticate. This new facility supports high-level testing.