Date permalinks use published date

fixes #1803

- switches date permalinks from created_at to published_at
- enforces that the post will ONLY render if the date is valid and correct
Merge pull request #1804 from ErisDS/issue-1803

Date permalinks use published date
Route tests

issue #1773

- Adds functional tests for frontend routing
- Tests the request-response contract
- Requires db access at the moment
- Tests #1790
Merge pull request #1805 from ErisDS/route-tests

Route tests
Fix gravatar retrieval

fixes #1778

- use http for initial request, store url with no schema
Merge pull request #1806 from ErisDS/issue-1778

Fix gravatar retrieval
Update CONTRIBUTING.md
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