Convert 'encoding' context keyword to a setting
Created originally on Bitbucket by Anonymous
A handful of hashes (such as lmhash) explicitly use a non-unicode encoding by default, but allow a custom one to be passed in as a context keyword to hash() and verify().
Given the advent of the PasswordHash.using() constructor, this is a much better fit as a setting, not a context-specific keyword.
All affected hashes should be converted over. Other hashes might also generally benefit from having an encoding setting that could be passed in via CryptContext.
Marking for 1.8, but this might get bumped forward until 1.9/2.0.