Fix a regression with displaying diff viewer file entries.

The "Files Changed" list in the diff viewer broke with Windows-style
paths. A previous change was made to fix a JavaScript injection issue,
but that caused some escaping issues when using backslashes. We now
escape both HTML and JavaScript.
Fix the console fallbacks to not break older browsers.

The console fallbacks were designed to work if no console API was
defined, but it still ended up accessing stuff inside of console. It
also had some unused code at the end. This has been fixed and should
restore compatibility with Firefox 3.x and IE.

Fixes bug #2880
Release Review Board 1.7.4.
Merge branch 'release-1.7.x'
Added nice styling of diffs in the FileDiff admin UI.

The FileDiff admin UI previously just showed diffs with no whitespace
preservation, which was useless. We now style it with Pygments, which is
nicer to look at.
Add automatic migration from FileDiff to FileDiffData on access.

In 1.7, we added the FileDiffData model, which stores the data of a diff
(be it a standard diff or a parent diff) in one place, hashed, in order
to reduce file size. This was only applied to newer diffs, and older
ones still had their data retrieved from the FileDiff.diff64 or
FileDiff.parent_diff64 fields.

This change adds automatic migration to FileDiffData when accessing
either FileDiff.diff or FileDiff.parent_diff. When accessed, we check if
there's an appropriate hash for the given field, and if not, we create a
FileDiffData for both and move the data over.

This ensures that we only ever read data from one spot now. As older
review requests are accessed, the database may shrink in size (in
general, assuming there are some redundant bits of diff data).

Ensuring that there's always a FileDiffData when dealing with diff data
simplifies some of our assumptions and will allow some new pieces of common
information we'll add to exist in only one place as well.

Unit tests were added to ensure that the migration paths work as
expected, and clean up after the old data.
Store insert/deleted line counts along with diffs.

When parsing a diff, we now keep track of the inserted/deleted line
counts and store them in the resulting file info. This is then stored in
the FileDiffData for a diff blob. We'll be able to use this later to
display a nice visualization of how many lines were added/removed.

When accessing line counts for older diffs, the diff will be migrated to
a FileDiffData (if needed) and line counts will be recomputed by
re-parsing the stored diff and pulling out those counts.

Unit tests were added to test parsing these for standard diffs and git
diffs (which does a bunch of custom parsing).
Convert the drag-and-drop support to Backbone.js views.

The file attachment DnD code has moved to DnDUploader and
DnDOverlayView objects.

DnDUploader handles listening for incoming dragenter events, creating the
overlay, and listening for file drops on the overlay.

DnDOverlayView displays the "Drop to Upload" overlay. It works just like
the previous one did, but the code has been made much simpler. We used
to have to deal with two drop boxes (screenshots and file attachments),
which complicated DnD events quite a bit (since we'd get dragleaves when
moving between elements). Now it's one element completely (a div with
text), so much of the heuristics have been able to be removed, including
the delay in fading out the overlay.

The CSS has been moved out to a dndUploader.less file, allowing us to
stay better organized.
Bugfix: Issue 2743, allow users to remove ssh from admin settings
Remove whitespaces and change to \'is None\' instead of \'== None\'
Fix code format issues
Remove unnecessary slash
Remove ending whitespace
Remove 'Delete Key' tag, but extend the button label.
Explicitly check whether delete button was pressed
Rename to did_request_delete, follow naming convention
Move `return key is not None` to the bottom, as default result.
Add comments to new or modified methods