Rework form and JS

The primary motiviation for this was to add the "required" asterisk
indicators to the required fields. Because each version of the
unpublish form has different requirements, it no longer made sense to
do everything in Javascript (it would have made the already
complicated show/hide logic in the JS even more so).

The options were to convert the form to a mustache template that could
be re-rendered with the appropriate parts visible, or to render three
separate forms and show the correct one based on the selected
unpublishing reason. I plumped for the later as it felt less
complicated than introducing mustache to admin.

This does mean the template has got a bit hairy, particularly with
the form generation. This is mainly because I'm making sure the form
fields have unique ids to keep our markup valid and to keep stuff
like preview.js happy.