Fix protocol specs after CQL version was made mandatory
Change the authentication to work more like the Java driver

I.e. you pass in an auth provider, which can create authenticators. Authenticators are created one per connection and can be stateful.
Implement full challenge/response support when authenticating
Fix speling
Merge branch 'full_sasl_support'

This closes #76
Handle the case when the auth provider raises an error
Add API docs for the authentication classes and options
Rewrote the authentication to avoid needing to pass the protocol version around

If the protocol is v1 the client will use a CredentialsAuthenticationStep instead of a SaslAuthenticationStep. This avoids the new auth provider API to have to deal with old-style authentication.