SCRAM prototype (do not merge yet)

This is a prototype of the SCRAM SASL mechanism.  For now it is client only, and there are a few problems, but I want to get initial feedback.