Implement secure password reset

Setting the new password directly and sending it by email is problematic, because the plaintext password will be stored in the inbox for an indefinite amount of time. It's better to generate a temporary token and let the user set their own password.
Use prepared statements to securely pass values to queries
Merge pull request #9 from Jacques1/password-reset

Implement secure password reset
Merge pull request #10 from Jacques1/prepared-statements

Use prepared statements to securely pass values to queries