Improve form validation & error handling

Changes:
- Add HTML5 form validation attributes
- Rename validation error verbage
- Move some validation from the controller to the validation method
- Add validation check for rules agreement checkbox
- Updated tests for new validation