Make "Update Diff" work like "New Review Request"

This change replaces the old "Update Diff" dialog with a new version that's
based on the pre-commit workflow from the "New Review Request" page. This makes
it so that the general case is as simple as selecting or drag-and-dropping a
diff file, and other questions (such as the basedir or parent diff) are only
asked if necessary.

The PreCommitView from the New Review Request page has been generalized into
UploadDiffView, which both the PreCommitView and UpdateDiffView extend. For the
most part, the only difference between these are the specific templates that
are used, and the fact that the update dialog uses `$.fn.modalDlg` around
`this.$el`.

This eliminates one of our two remaining uses of `$.formDlg` and
`gReviewRequest`, getting us that much closer to a clean javascript codebase.

Testing done:
* Went through all the old scenarios with the "New Review Request" page to test
  for regressions.
* Updated a diff on a review request and saw the resulting change.
* Updated a diff on a review request that required a parent diff, specified
  that parent diff, and saw the resulting change.
* Tried to update a diff on a review request with a patch file that had short
  revs for git and saw the appropriate error.
* Updated a diff on a review request using an svn repository and was prompted
  for the base directory.

Reviewed at https://reviews.reviewboard.org/r/6138/
Update to the latest less.js

When running the devserver, I noticed that I wasn't getting retina icons
anywhere. The issue here is that the version of the less.js that we loaded when
running with `DEBUG=True` had a bug when importing mixins using `(reference)`.
I've updated our shipped copy to the latest release (1.7.3) and it fixes the
issue.

Testing done:
Loaded a review request and the admin dashboard and saw retina icons
everywhere.

Reviewed at https://reviews.reviewboard.org/r/6152/
Add a new close icon for admin widgets.

This change adds a new close icon to use for admin widgets which matches the
style of the collapse/expand icons.

Testing done:
Loaded the admin dashboard and saw the new pretty.

Reviewed at https://reviews.reviewboard.org/r/6153/
Upgrade to CodeMirror 3.23.

This release fixes some issues with Markdown and some issues with
editing JSON payloads (needed for the upcoming API token policy editor).

This is not the latest CodeMirror, but we had issues with the 4.x series
(4.2, specifically) last time we tried it. There's a 3.24 release, but
it's not on the online minifier yet.

The build of CodeMirror is also updated to support JSON/JavaScript
modes, and to support optional linting and brace matching.

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