Add SCRAM-SHA1 support

Factor out GS2 tokanization into own class
Add authentication exception class

Fixes #71
Improve auth error handling and state machine
Merge pull request #665 from SamWhited/issue71

Add SCRAM-SHA1 support