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
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
Implement Apps API

closes #2465
- Add new API for apps
- Add integration tests for app api
- Add new permissions for apps