SCRAM client implementation

Depends on #48, but can be reviewed now.