Provide better protection for creating from changenums on Local Sites.

We saw an issue where a review request on a Local Site was getting
created without a local_id. This seems likely to be due to an exception
when updating from a change number. I could not reproduce it locally,
but it makes sense.

This adds some bullet-proofing to that, falling back to not updating the
review request. It also doesn't attempt to update until after the review
request has been assigned a local_id (if on a Local Site).

Reviewed at https://reviews.reviewboard.org/r/6027/
Funnel through the Empty ChangeSet error in the web API.

Updating a review request with a change number that represents an empty
changeset would cause an internal server error. We now return a proper
error code for this.

Reviewed at https://reviews.reviewboard.org/r/6041/
Merge branch 'release-1.7.x' into release-2.0.x
Use beanbag-tools for much of the release script.

This makes use of the modules found in beanbag-tools to perform the
release, greatly simplifying the release script. Now, the release script
just defines the order of operations, and any custom building that needs
to be done.

Reviewed at https://reviews.reviewboard.org/r/6023/
Include the Python version in the support tracking data.

The Python version is now sent along with the other support data, in
order to better track issues and see what versions of Python are still
being in use.

Reviewed at https://reviews.reviewboard.org/r/6038/
Fix issues with the new update_from_commit_id protection on 2.0.x.

A fix was recently added to prevent a failure when fetching a changeset
from creating a review request without a commit ID. This worked fine on
1.7.x, but the underlying code changed a bit on 2.0. On 2.0, we didn't
have a saved review request in the database before attempting all this,
and the new change broke saving of review requests completely.

The code has been reworked to perform the updating and validation early,
and to also associate the commit ID in the event of failure (in order to
allow it to more easily try again or at least look up the review request
later).

A number of unit tests for various conditions were added to help with
these cases and to also test for commit ID uniqueness.

Reviewed at https://reviews.reviewboard.org/r/6044/
Add better support for archiving repositories.

Archiving had issues before where an archived repository's path would
still conflict with a newly created repository. This confused a lot of
people using RBCommons, and required some manual work on our end to fix.

Now, we store a flag indicating that a repository is archived, and we
store the archived timestamp. The timestamp becomes part of the
unique_together for the path, preventing that from conflicting.

Reviewed at https://reviews.reviewboard.org/r/6043/
Add draft and close banners to review UI pages.

The review UI pages for file attachments didn't have draft or close banners,
which made it kind of confusing, especially in the case when the review request
wasn't yet published. This change adds them, and fixes up some of the issues
that resulted from it.

Testing done:
Tested draft, public, and closed review requests with both the text and image
review UIs. Saw all the expected banners and no javascript errors.

Reviewed at https://reviews.reviewboard.org/r/6033/