CAS-1238 New Authentication API

See https://issues.jasig.org/browse/CAS-1238 for description of changes.

The new authentication API has been crafted in several commits, the first of which is by far the largest. I believe the work is reasonably complete to be merged with master, but I'm certain that further review and testing will reveal additional changes that may be required either before or after merging. I realize that review of the first commit will be challenging due to size, but this is a huge change and I'm confident that in order to compile the first change is necessarily large. If there is anything I can do to facilitate review, then I'd be happy to attempt to accommodate.