Speed up the creation and publishing of drafts.

This massively reduces the number and complexity of queries needed to
both create review request drafts and to publish them. This code was old
and predated things like the F() queries and update_fields=. It also
took an ignorant approach to updating lists of ManyToManyFields.

We now make use of all three approaches to substantially reduce the
number of queries we have to perform, and to keep those queries simpler.

While in there, I also fixed copying over extra_data into the draft,
which was missing before.