Cache control headers & query string asset management

closes #1470
issue #1405

- added cache control middleware
- added defaults for all routes, assets, etc
- updated asset helper to add a query string with a timestamp hash to all assets
- added unit tests for asset and ghostScriptTags helpers
- added cache-control checks to route tests
Merge pull request #1798 from ErisDS/cache-control

Cache control headers & query string asset management
Move config path.update to config.load

issue #1789

- we can do this step a bit earlier and it aids with neatness
- also means for tests that config.load() is enough to get config & paths initialised
Merge pull request #1813 from ErisDS/path-change

Move config path.update to config.load
Error handling simplification & test improvements

fixes #1266

- simplifies the check for if a theme has an error template
- adds more / better tests for error handling
disable save button during image uploads

closes #1661

- disables save button at beginning of image upload
- enable save button at image upload fail, at image upload and download success and also at dropzone init
Fixes admin session cookie test

- Currently the test is taking the response date
which is in UTC and passes it through moment()
which by default parses input as local time.  We
then add 12 hours to this now local time
and when compared against the response set-cookie
header the time spread is wrong.

- To fix we’re parsing the response date with
moment.utc which parses the date in UTC.
Merge pull request #1816 from hswolff/fix-admin-session-test

Fixes admin session cookie test
Merge pull request #1815 from ErisDS/more-tests

Error handling simplification & test improvements
Fixes showing tag suggestions and tag container padding

fixes #1774
- Delayed showing the tag suggestions popup unless matching tags were found
- Changed the padding-left on the added tag container to 8px from 20px to fall in line with the left shadow overlay
Update CONTRIBUTING.md

fixing the doc as per discussed in the comments for pr/1824
Merge pull request #1826 from demesne/patch-2

Update CONTRIBUTING.md
Modified github.js to ensure __ isn't escaped at beginning of line

    fixes #1791
Added handling for undefined errors and test coverage

Fixes #1827
Merge pull request #1814 from cobbspur/uploadsave

disable save button during image uploads
Merge pull request #1828 from ddoolin/fix-tag-suggestion-and-padding

Fixes showing tag suggestions and tag container padding
Disabled styles for disabled buttons

Duh
Adds ability to quickly get to post’s edit page

fixes #1810

- updates frontend.single route to accept ‘edit’
as the last param

- updates controller.frontend to handle redirection
only when we would otherwise have rendered the page

- added unit tests for this behavior
Merge pull request #1819 from hswolff/quick-edit-post-redirect

Adds ability to quickly get to post’s edit page
Fix {{content words=“0”}} to actually return 0 words

fixes #1796

- adds in a workaround to the weirdness that currently
exists in downsize module
- adds tests