Support SCRAM-SHA-1 SASL mechanism
Gajim doesn't support SCRAM, which will be the new MTI.
Steal my implementation and butcher it into auth_nb.py
I'd note that a couple of things are missing from this patch:
1) Mutual authentication isn't done - it's also missing for DIGEST-MD5 entirely, so I doubt this is a blocker.
It is done if the server sends the server proof in a - which is silly, but we do it. If the proof is invalid, though, I just do 'raise "Hell"', which ought to be corrected to dropping the connection and alerting the user.
2) Channel binding isn't done.
I do have the code to do this, as well, with PyOpenSSL, but I have a feeling that some cases required a patched PyOpenSSL. I'll dig out the patches and submit them. (Again).
(In [2593c6a02d88]) [Dave Cridland] basic SCRAM-SHA-1 implementation (no channel binding). Fixes #5622