Restored spam prevention

closes #3128
- added spam prevention middleware
- restored tests
Refactor custom select styling

This is for both the global styling and the alternate version in the PSM for the author dropdown.

- `<select>` elements are note more accessible, with :focus support
- They no longer need a data-attr to show the currently selected item

NOTE: Does not work in Firefox. Yet.
Prevent loading setup screen if already setup

Closes #3145
- Prevent navigation to the setup screen if Ghost setup
  has previously been completed.
- Fix templates that were incorrectly using foreach instead of each.
- Add validation for minimum password length.
- Fix up functional tests and split out tests for setup to a separate
  instance of casper because setup requires a new database.
- Add a cleanDatabase task to grunt which resets the database to
  new.
Handle undefined datetime values

Closes #3288
- Check for undefined last_login and created_at values that occur
  on a User model for an invited user.
Hacky FORCE_MIGRATION env var

refs #2600

One day in the future it would be nice to have a CLI for Ghost
In the meantime, lets have an easy way to force migrations to run
This is for development, or dead end situations only
It will at least do a DB backup ;)
Merge pull request #3280 from jaswilli/issue-3145

Prevent loading setup screen if already setup
Merge pull request #3282 from sebgie/issue#3128

Restore spam prevention
Merge pull request #3298 from jaswilli/issue-3288

Handle undefined datetime values
Merge pull request #3296 from ErisDS/force-migrate

Hacky FORCE_MIGRATION env var
Firefox fixes for new select style
Correct positioning of editor floating header elements

Closes #70
Minor setup screen design tweaks
More useful code comments
Restructuring setup styles so they can be used on signup, too
More graceful fade-in animation
Revert "Restore spam prevention"
Merge pull request #3307 from TryGhost/revert-3282-issue#3128

Revert "Restore spam prevention"
Better mobile styles and spacing for user list and fix mobile Back button

Closes #69
Adding and renaming permissions

refs #3283, refs #2739, refs #3096

- Renames permissions which didn't follow bread
- Adds permissions for notifications, mail and tags

Still todo:

- wire up the new permissions where they are needed
- add permissions for roles
New signup screen

See #3082 - This borrows setup screen styles for now