Implement Crypto routines + unittests

-Store salted SHA256 hashes instead of plaintext passwords
-Encrypt a randomly chosen master key using another key derived from the password and (different) salt using PBKDF2
-Store the encrypted master key in the database