Introducing PasswordHash

By @fraga, replaces PR #49 - consolidates all the commits into one. Per
@fraga there's a false negative that still needs to be resolved.