SCRAM client and server implementation

Basic functionality test passes, ready for review and merge.