Display 404 page if tag does not exist.

closes #2667
- if tag result is '' 404 instead of rendering an empty page
- added test for /tag/asdf should 404
Ensure settings values are strings before saving

closes #2736
-reintroduces JSON.stringify for non-string values in
 api.settings.edit
-added a regression test
Merge pull request #2737 from jaswilli/issue-2736-pg

Ensure settings values are strings before saving
Move mail api to json/api format

Fixes #2650
* rerouted all mail sending to api/mail
* changed request and response formats to json/api-like structure
* tested with forgotten password and new blog email
Merge pull request #2715 from javorszky/iss2650

Move mail api to json/api format
Implements new Themes JSON API

closes #2592
- Add themes browse/read endpoint
- Add new permissions for themes (only admin by default)
- Add integration tests
Fix validation

- fixed validation that broke when introducing error classes
- added a test
Add apps permissable checks in posts and users

Closes #2738

- Re-introduce the TargetModel.permissable interface check in the
regular permission flow path
- Pass loadedPermissions, hasUserPermission and hasAppPermission to
permissable interface to reduce logic necessary
- Refactor recursive call to pass original arguments but with actual
model
- Refactor canThis(this.user) use in api/posts.js to just canThis(this)
Merge pull request #2755 from sebgie/fix-validation

Fix validation
Merge pull request #2673 from halfdan/2592-tags-api

Implements new Themes JSON API
Merge pull request #2735 from shindakun/tag404

Display 404 page if tag does not exist.
Merge pull request #2753 from jgable/fixPermissable

Add apps permissable checks in posts and users
Fix sign up not setting user on session

No issue found

- Grab user out of api response from users[0]
Merge pull request #2766 from jgable/fixRegister

Fix sign up not setting user on session
Refactor API arguments

closes #2610, refs #2697

- cleanup API index.js, and add docs
- all API methods take consistent arguments: object & options
- browse, read, destroy take options, edit and add take object and options
- the context is passed as part of options, meaning no more .call
  everywhere
- destroy expects an object, rather than an id all the way down to the model layer
- route params such as :id, :slug, and :key are passed as an option & used
  to perform reads, updates and deletes where possible - settings / themes
  may need work here still
- HTTP posts api can find a post by slug
- Add API utils for checkData
Merge pull request #2732 from ErisDS/issue-2610

Cleanup & Refactor API option names
Corrected link to user profile settings

closes #2745
- Added link
Validate user URL input to ensure protocol is present

closes #1623
- added protocol validation to isURL on user settings validator.
- added placeholder URL to user profile template
- ref: https://github.com/sethlilly/Vapor/issues/10
- ref: https://github.com/oswaldoacauan/ghostium/issues/38
Improve signin

Ref #2413

- Remove fixture and use actual API
- Store and send down actual logged in user data
- Refactor isLoggedIn to use computed property on application
- After signin, update user data in dependency container
- Add CSRF to all routes and controllers via initializer
- Update authenticated route to check for user.isLoggedIn
- Add notifications for signin error
- Add notifications.showAPIError helper
- Add plumbing for refreshless signup to doSignUp in admin controller
Correct behaviour for trailing slashes

fixes #2741
- Extend HistoryLocation
- Add trailing slash to path