Adding docker for trying out docs generation

issue #2622

- yes 'docks' is a silly directory name but it's easier to remember which is which than docs and docs2
Gruntfile Cleanup & Documentation

refs #2622, refs #1340

- added documentation to grunt tasks which will replace the wiki page, including reordering the tasks to make the documentation easier to read
- removed grunt changelog which is no longer used
- merged jshint:shared into jshint:server
- cleanup of quote marks, formatting, line lengths etc
- also fixed the incorrect version number for grunt-docker
- added route tests to coverage
Return new tags when posts are created via API

closes #2680
- added include options when adding a post
- added functional and integrational tests
Merge pull request #2683 from lennerd/issue-2680

Return new tags when posts are created via API
Adjust update check to handle changes in API calls

closes #2681
- fixed api calls and response parsing
- added a test to for update check
- adjusted gruntfile.js to run new update check integration test
Merge pull request #2685 from jaswilli/issue-2681

Adjust update check to handle changes in API calls
Add location header to response when new object is created

closes #2635
- add new logic to the api request handler to set a location header
  when new objects are created
- added an api context to config.urlFor() to return the root url
- added functional tests for the affected routes
Merge pull request #2677 from jaswilli/issue-2635

Add location header to response when new object is created
Change error message response

closes #2643
- added error type
- added error property for validations
- wrapped errors in an array
- returns multiple errors for validation
- updated tests and admin
Merge pull request #2669 from sebgie/issue#2643

Change error message response
updated error handling on all mocha tests

- switch to using catch
- added error handling where missing
Merge pull request #2692 from cobbspur/newerror

updated error handling on all mocha tests
Docs: switch to docker & finalise config

 - We no longer need grunt-groc as we are going to use docker instead
 - Compile docker to 'docs'
 - Docker has a nice option for only building updated files
 - Added a few files we didn't need dockering to exclude list
Proper endpoints for persistent notifications

closes #2637
- Add new get API route for all notifications
- Wrap API responses to comply with JSON-API
- Add new tests / adjust fixtures
- Adjust all occurences of passive notifications
Merge pull request #2665 from halfdan/2637-persistent-notifications

Proper endpoints for persistent notifications
Consistency in model method naming

- The API has the BREAD naming for methods
- The model now has findAll, findOne, findPage (where needed), edit, add and destroy, meaning it is similar but with a bit more flexibility
- browse, read, update, create, and delete, which were effectively just aliases, have all been removed.
- added jsDoc for the model methods
Merge pull request #2688 from ErisDS/model-cleanup

Consistency in model method naming
Add gzip compression, can be disabled in config.js

Closes #1305
- added compression module
- added new server config variable: compress
- gzip enabled by default
Merge pull request #2687 from shindakun/expressgzip

Add gzip compression, can be enabled/disabled in config.js
Refactor omit of password

- remove password in toJSON() instead of filtering every occurrence of
user
- changed faulty error type ‚NotFound‘ to ‚NoPermission‘