Respond with json when accept header set

This is required to support javascript drag and drop uploading of files.
The upload code was refactored to output a common response object this
meant the removal of the error page to unify where the response
redirected to. Messages have been moved inline until we gain the
intermediary "preview" pages.
Add dropzone implementation for file upload

Drag and drop file upload with custom styling and error handling
Change styling of upload success and error

Previously the styling was functional but not very pleasant. This steals
some colours from govuk_frontend_toolkit and uses them.
Improve file_upload CSS

Catch a few different cases where message might not have a payload or
the payload might not be a list.

Wrap everything up in a closure because it is pleasant.
Style error messages on file upload failure

Also display a message on successful file upload. This involves
refactoring so we dont return the success message, but assume if there
are no problems returned there is an error state
Handle new success response in JS

To indicate success, as well as a 200 response we sent no problems. We
now have to add a message to the list if this is the case.
Emphasise that files can be select or dropped
Better styling for upload messages

- Added a margin
- Don't display success message as a single list item
- Use default list styles for validation errors