Add forgot password functionality

Add forgot password functionality, add forgot password page, and functionality to generate a new random password and email it to the corresponding user.