CAS-1238 New AH interface for LPPE generalization and clear error handling.

A new AuthenticationHandler component in the root authentication package
provides a number of notable features consistent with long-term goals:

1. Provides rich metadata (HandlerResult) on success that may be used by
   higher level components. For example, a JDBC AH might express a password
   expiration condition by setting getWarnings() that may be leveraged
   by LPPE components.
2. Clarifies error handling contract to distinguish between an
   authentication failure (GeneralSecurityException) and a situation
   where authentication was prevented (PreventedException). The rich
   vocabulary of the GeneralSecurityException hierarchy allows a natural
   mapping from common failure modes (e.g. password expiration) onto
   concrete exception classes.
3. Package structure allows both old and new AH components to coexist,
   providing a transition path for existing CAS adopters to gradually
   migrate custom authentication handlers to the new API.
   The LegacyAuthenticationHandlerAdapter component provides an out-of-box
   transition strategy.
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.
Merge branch 'master' of github.com:Jasig/cas into feature-new-authn-api

Conflicts:
	cas-server-core/src/main/java/org/jasig/cas/CentralAuthenticationService.java
	cas-server-core/src/main/java/org/jasig/cas/CentralAuthenticationServiceImpl.java
	cas-server-core/src/main/java/org/jasig/cas/authentication/AbstractAuthenticationManager.java
	cas-server-core/src/main/java/org/jasig/cas/authentication/AuthenticationManagerImpl.java
	cas-server-core/src/main/java/org/jasig/cas/authentication/DirectMappingAuthenticationManagerImpl.java
	cas-server-core/src/main/java/org/jasig/cas/authentication/LinkedAuthenticationHandlerAndCredentialsToPrincipalResolverAuthenticationManager.java
	cas-server-core/src/main/java/org/jasig/cas/authentication/handler/AuthenticationHandler.java
	cas-server-core/src/main/java/org/jasig/cas/remoting/server/RemoteCentralAuthenticationService.java
	cas-server-core/src/main/java/org/jasig/cas/web/flow/AuthenticationViaFormAction.java
	cas-server-core/src/test/java/org/jasig/cas/CentralAuthenticationServiceImplTests.java
	cas-server-core/src/test/java/org/jasig/cas/authentication/AuthenticationManagerImplTests.java
	cas-server-core/src/test/java/org/jasig/cas/authentication/handler/support/SimpleTestUsernamePasswordAuthenticationHandler.java
	cas-server-core/src/test/java/org/jasig/cas/authentication/handler/support/SimpleTestUsernamePasswordHandlerTests.java
	cas-server-core/src/test/java/org/jasig/cas/remoting/server/RemoteCentralAuthenticationServiceTests.java
	cas-server-core/src/test/resources/core-context.xml
	cas-server-integration-restlet/src/main/java/org/jasig/cas/integration/restlet/TicketResource.java
	cas-server-support-ldap/src/main/resources/deployerConfigContext.xml
	cas-server-support-openid/src/test/java/org/jasig/cas/support/openid/web/flow/OpenIdSingleSignOnActionTests.java
	cas-server-support-trusted/src/test/java/org/jasig/cas/adaptors/trusted/web/flow/PrincipalFromRequestRemoteUserNonInteractiveCredentialsActionTests.java
	cas-server-support-trusted/src/test/java/org/jasig/cas/adaptors/trusted/web/flow/PrincipalFromRequestUserPrincipalNonInteractiveCredentialsActionTests.java
	cas-server-support-x509/src/main/resources/deployerConfigContext.xml
	cas-server-support-x509/src/test/java/org/jasig/cas/adaptors/x509/web/flow/X509CertificateCredentialsNonInteractiveActionTests.java
	cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml
Configure checkstyle plugin to support execution in modules.
CAS-1294: Services Manager does not load all services with identical names.
CAS-1188: Make SAML support as an optional module for CAS server

Like for other external protocols, the classes to serialize through Kryo are to be declared explicitely
CAS-1264: Move OpenIdProviderController from webapp to OpenID module

The identifiers generator for OpenIdService must be defined explicitely when using the OpenID support and not always
CAS-1286: Extract the OAuth client support in its own module

upgrade to pac4j release (1.4.0), make ClientCredentialsToPrincipalResolver inheritable, store 'raw data' to be send to CAS client applications.
CAS-1281 Add LdapAuthenticationHandler based on ldaptive.

Unit tests require the following environment/devleoper-specific files to
exist in the module root directory:

 1. ldaptive.properties
 2. credentials.properties
 3. extraConfigContext.xml

There are sample versions of each file for reference.
CAS-1281 Add Monitor components for ldaptive connection factories.
CAS-1281 Fix license headers.
CAS-1281 Add ldaptive-based Spring Security UserDetailsService component.
CAS-1281 Add ldaptive-based IPersonAttributeDao.

This component will support attribute release machinery in CAS including
CredentialToPrincipalResolver components.
CAS-1281 Move ldaptive test configuration onto test classpath.
CAS-1281 Provide a sample resultAttributeMapping bean.
CAS-1281 Address LdapAuthenticationHandler code review feedback.

Add allowMultiplePrincipalAttributeValues flag (default false) to handle
duplicate principal ID attribute values.
Misc code cleanup.
First pass at LPPE, converted test configuration to use namespaces, and configuerd ldaptive password policy beans.
LPPE, with ldap date converters and configuration bassed on ldaptive. Work in progress.
LPPE, with ldap date converters and configuration bassed on ldaptive. Work in progress.