Pull out consultation response to separate tab

This implements the basic CRUD for adding and editing consultation
responses outside of the main edition form
Add UI for managing response attachments

This makes Admin::AttachmentsController polymorphic such that it can
be used to manage attachments on responses as well as editions. In
theory, very little additional work will be required to use it
for managing attachments on the remaining "attachable" models in the
system.

This has been complicated slightly by the fact that Response does
not use the Attachable module and has it's association and join model
for attachments set up slightly differently than the rest. For now,
I've simply added the relevant methods directly to the Response class
and adjusted the relevant association accordingly. Hopefully, a later
commit will DRY things up and make Response "Attachable", assuming it
doesn't have any strange behaviour that stops me unifying things (for
a start, the join model naming does not conform to that of the
Attachable module...)
Generate correct tabs for the attachable thing

Consultations get a different set of tabs to other editions. This
tabbing code is about ready for a refactor...
Clean up old response handling code

We have to leave the crufty code for handling response forms in place
for now. Still, look at all the red!
Clean up Response model

Gets rid of a lot of the cruft that was required for dealing with
nested attributes. As part of this, Response published_on is now a
required attribute. The previous code did some crazy hoop jumping so
that the published_on date was set auto-magically if the response
had a summary or an attachment (because nested attributes lols).
Pre-fill response published date

To make things a little easier for editors, the published_on date is
preset to the current date when creating a new response. This also
tidies up the form (it's a date after all, not a date time...)
Tidy up response layout in admin

This also adds HTML sanitisation to the Response model.
Prevent changes if consultation is unmodifiable
Limit response access based on the consultation

Make sure only editors with the requisite permissions and access level
can work with responses
Response can use Attachable

We can use Attachable to DRY things up. Note that the attachment
associations are defined explicitly, rather than calling the
attachable class method. We have to do this because the join table
used for response attachments doesn't follow the same naming
convention as Attachable
Remove duplication
Response must have a summary

This validation is limited to new responses as there will be existing
responses with a blank summary that we want to remain valid.
Only show atttachment sorting when possible

It's confusing to show these controls when there is only one
attachment.
More tweaks to UI for responses

Note regarding the wording used: there are other stories relating to
creating a new model for public responses. As part of that, we are
likely to rename the existing "response" model to "outcome" and also
rename the response summary column to something else, as it's not a
summary in the same sense as we use it elsewhere.
Remove unused method
Simplify attachment form
DRY up response new/edit templates
Remove Response#published?

We shouldn't pretend that we have scheduling of responses. If a
response needs to be scheduled, this should be done using the
scheduling feature on the consultation itself.

This commit also cleans up the remaining test failures.
Remove more redundant code
Merge pull request #698 from alphagov/split-out-responses

Split out responses

https://www.pivotaltracker.com/story/show/53893953