Implemented authentication & authorization using Flask-Login and Werkzeug

(closes #61)

Functionality:
- Admins must be logged in to access admin areas
- Only logged in admins can create new admin accounts
- If no admin accounts exist, an anonymous user can create the first admin account
- Authentication is provided through an email address and password
- Passwords are hashed and salted by Werkzeug using PDBKF2 and SHA1 with 1000 iterations ([more info](http://werkzeug.pocoo.org/docs/utils/#module-werkzeug.security))

To be implemented (not in this PR):
- Ability to reset an admin's password
- Delete/disable admins
- View a list of admins