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.
Management app changes
Compatibility changes
Core changes
Core changes
Core changes
Core changes