Overhaul for website security/authentication

- Password hashing with SHA-256 using PBKDF2_HMAC for key extension instead of single iteration MD5 (lol..)
- Better password recovery with randomly generated keys, instead of using Python's built in hash function (which is completely unsuitable for cryptographic use), by storing the keys in the database
- More to come (this is not yet finished)
Oops. Yeah, I wasn't actually planning on committing just yet, but I needed to commit in order to continue testing (I had a test environment set up on my mac, since I don't have constant access to internet without using my phone right now, but I don't have an email server set up for testing).