Bump to 1.7.29 dev.
Display useful errors when failing to load branches or commits.

In the New Review Request page, if there's any sort of issue loading the
list of branches or commits from a repository, the result is a blank
list of branches or commits with no error message, and an error e-mail
sent to administrators. This is not very helpful.

Now when there's an error loading any data from the server, an error
box will appear saying there was an issue loading from the server,
and showing the server-provided error message. The user will be given
the option to try the request again.

For this to work, RepositoryBranchesCollection had to be made a subclass
of BaseCollection, and BaseCollection had to be given support for
parsing and storing errors on the xhr, similar to what BaseResource
does. This code has been pulled out into a common function that both
classes now use.

The RepositoryBranches and RepositoryCommits resources now return a
proper error code when encountering a SCMError. We're reusing the "Error
fetching information from this repository" error, with a custom message
(provided by the SCMError).

Reviewed at https://reviews.reviewboard.org/r/6267/
Prevent updating a closed review request through the UI.

A closed review request still had a fully-functioning Update menu,
which allowed new diffs and file attachments to be added without any
visible draft banner. While these would internally be part of a draft
and wouldn't be visible to any other users, it was confusing and
conflicted with the fact that all other editable components were
disabled.

The "X" buttons for deleting file attachments and screenshots was also
being shown, but was non-functional. It too has been removed.

Reviewed at https://reviews.reviewboard.org/r/6268/
Merge branch 'release-1.7.x' into release-2.0.x
Fix some issues with new file attachment thumbnails.

When uploading file attachments, the generated thumbnails end up with
some glitches with the caption editor and links.

Opening the caption editor would result in the editor being shifted
over. This happened because the buttons element defaulted to 'display:
span' and not 'display: block' (due to a recent Djblets change),
messing up calculations.

The download links for new attachments were also wrong, pointing to
nothing. When the attachment is first created, we have an empty
RB.FileAttachment, and we never updated those links.

Similarly, icon URLs were set to 'null', causing 404s, at first. Now,
they're just not set until there's a value.

All values going into the template are now escaped, preventing breakages
if uploading a filename that has special characters.

And finally, several this.model.on() calls have been replaced with
this.listenTo() calls.

Reviewed at https://reviews.reviewboard.org/r/6269/
Limit the valid list of LocalSite admin permissions.

LocalSite admins were being shown as having all available permissions,
meaning that some code would appear to grant them permission (typically
for display) while others would disallow (when actually factoring in the
permission for anything real).

The main case where this was apparent was that LocalSite admins were
seeing "Delete Permanently" for review requests, though the option would
not work.

We now have a pre-defined list of valid permissions that LocalSite
admins can have. This was collected from all the call sites in the
codebase where permissions are checked. No other permissions are
considered available to the admin.

Reviewed at https://reviews.reviewboard.org/dashboard/?view=outgoing
Smoothly show the dashboard on page load.

The dashboard auto-sizes to fit after load, and this was very noticeable
and ugly. We now hide the whole dashboard container at first, and then
show it just before the resize. This causes it to appear and be sized
correctly all at once, making for a much nicer experience.

Reviewed at https://reviews.reviewboard.org/r/6271/
Fix interdiffs when comparing revisions with stripped-slash filenames.

The leading-slash stripping code strikes again. In this case, an initial
revision of a diff was uploaded prior to an upgrade, and a new version was
uploaded subsequent. The result is that the filenames don't match exactly
because one has leading slashes and the other doesn't.

This change normalizes the filenames to always compare them without leading
slashes when figuring out which files match up with which.

Testing done:
Created two diff revisions and changed the FileDiffs in the database so that
the first one had leading slashes and the second didn't. Before this change, I
see two entries in the interdiff for that file. After, it shows the correct
interdiff.

Tested all permutations of leading slash/no leading slash in interdiff
combinations.

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