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.
CAS-1283: principal attributes in the service validate success payload.

WEB-INF/view/jsp/protocol/3.0/casServiceValidationSuccess.jsp and
WEB-INF/view/jsp/protocol/3.0/casServiceValidationFailure.jsp
are now the default service validate views.
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
 - first protocol 3.0 md version. Still some markup has to be removed.
 - reworked spec 3.0 md file
 - updated README.txt
 - sample 3.0 pdf file
 - formatting
 - formatting
 - added html output as sample
 - fixed typos, formatting, grammatics
 - added copyright info to history entry
 - updated pdf with latest version
 - avoid hyperlink on example url
 - [CAS-1284] additionally converted the existing JASIG Wiki Spec 2.0 to md format and pull that into GitHub.

 - only change made was the fix of the internal link anchors. No textual changes.
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.