Update validation to match server error.

When a using the forgottenRoute if you enter an incorrectly formatted
email address you would see the error message 'Invalid Email', however
if you entered an email address that was correctly formatted but missing
the error message would be 'Invalid email address'.

This fixes the discrepancy.
Implement user and related content deletion

Closes #3100

* Introduces `destroyByAuhor`, given a context and an id, it will check if context has permission to delete the user by the id, and then deletes all the content where `author_id` is id, and then deletes the user
* Does multiple checks to make sure user exists
* Added a fixture `posts:mu` that creates 4 users belonging to 4 roles, 50 posts that have authors evenly distributed, 5 tags and all 50 have one tag attached to it, evenly distributed.

Caveats / questions

* Started testing
Add keyboard navigation of posts

Closes #3015
- Added stepThroughPosts method to PostsRouter, takes a integer, goes that far, wraps around the array.
- PostsPostRoute notifies the PostsController of which model it currently has, to help stepThroughPosts know who's selected
Merge pull request #3470 from novaugust/up-down-posts

Add keyboard navigation of posts
Merge pull request #3467 from rwjblue/update-validation-to-match-server-error

Update validation to match server error.
Merge pull request #3371 from javorszky/iss3100

Implement user and related content deletion
Merge pull request #3474 from felixrieseberg/iss3400

User Settings: Display cog based on rights