CAS-1468: X509SubjectAlternativeNameUPNPrincipalResolver

Microsoft (and others) support the embedding of a UserPrincipalName object as a SubjectAlternateName extension within an X509 certificate, allowing properly-empowered certificates to be used for network logon (via SmartCards, or alternately by 'soft certs' in certain environments). An X509UserPrincipalNameResolver class would make the use of CAS as a web single sign on solution incredibly easy for AD domains with an existing PKI infrastructure.
I believe ASN1Sequence would throw an IllegalArgumentException that would bubble up from the resolver. Not sure the exception would bubble all the way up to the servlet container, but my guess is that it would. Assuming this is targeted for CAS 4.0, should throw PrincipalException [1] to signal that resolution failed. That checked exception is handled gracefully by authentication components.

[1] https://github.com/Jasig/cas/blob/670e3e8f6b53918ef935098987ccb4491154225e/cas-server-core/src/main/java/org/jasig/cas/authentication/PrincipalException.java