Use passlib's bcrypt to hash passwords for storage

1. Modified password storage to use bcrypt and store per-user salts in the user db.
2. Added add_user function to auth module.
3. Added tests for add_user and check_credentials functions from auth module.
4. Added doc for hashed password storage/verification in add_user and check_credentials.
5. Modified firstboot and user_add forms to call add_user.
6. Update user model to add salt field.

(not directly related)
7. Modify forms to use POST method instead of GET. I think the CherryPy bug has been fixed, because forms are working for me with the POST method.