Allow service extraction to be handled by ArgumentExactors

Deals with https://github.com/Jasig/cas/issues/695
any thoughts on moving this to some type of enum so we can get consistent terminology across protocols (i.e. Protocols.CAS.getServiceParameter() and Protocols.SAML.getServiceParameter().  Would allow us to create more shared components where you just passed in the protocol enum and it could extract everything it needed.