Move image upload to API

closes #3252
- added `/ghost/api/v0.1/uploads/` endpoint
- removed upload method from `controller/admin.js`
- moved removal of temporary files from storage to endpoint (needed to
account for failed uploads)
- changed and moved tests
- Oversight: I think that we use `.otherwise()` and `.catch()` a bit
too extensive and mask the real error objects. We probably need an
error handling strategy at some point in the future.
Button refactor

Refs #3101 & #916
Remove minor notifications; Close persistent notifications even on error

Closes #3105, Closes #3175

- Removed notification on successful post's `page` status change
- Removed notification on successful post `featured` status change
- Added `closePassive()` notifications on error in the post-settings-menu
- Persistent notifications will close whether their `DELETE` request was
  successful or not.

 #### Misc
- Added `name` attribute to `post-setting-menu.hbs` inputs to facilitate testing
- Removed `return <Promise>` from action in `PostSettingsMenuController`. Actions should only return `true`
- Toggling `post.featured` won't fire NProgress.
Move inline templates to standalone template file

Refs #3161
- Move two inline template snippets from the post tags input
  component into the .hbs template file so they can be
  pre-compiled.  Needed when shipping only the handlebars runtime
  in production mode.
Merge pull request #3210 from novaugust/remove-minor-notifications

Remove minor notifications; Close persistent notifications even on error
Merge pull request #3259 from novaugust/settings-mobile-routing

Refactor Settings routing and mobile interactions
Merge pull request #3278 from jaswilli/prod-prep

Move inline templates to standalone template file
Merge pull request #3270 from ErisDS/migrations

Migration improvements
Unhide settings on mobile and adjust positioning for left setting header buttons

Refs #67
Replace anchors with no real href with buttons

Closes #3101 & #916
Merge pull request #3276 from sebgie/issue#3252

Move image upload to API
Merge pull request #3277 from PaulAdamDavis/link-href-fixes

Replace anchors with no real href with buttons
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