Support different request and response bindings for AuthnRequest

ProtocolBinding in AuthnRequest indicates how response should be delivered, not how the request is being delivered. Currently there is no way to send a request via HTTP-Redirect but request a response via HTTP-POST - both bindings have to be the same.

Saml2Client.prepare_for_authenticate() needs to distinguish between the request binding (how the request will be delivered) and the response binding (how the response should be delivered, indicated by ProtocolBinding in the request XML).