Make the diff viewer prettier and cleaner.

This polishes up the look of the diff viewer a bit. The highlights
include:

* Removed lots of unnecessary borders, that separated content, instead
  relying on the backgrounds and whitespace for the separation.

* Softened the colors, making the reds and greens and browns less harsh.

* The borders around the chunks are now based on the color of the chunk,
  instead of a generic grey.

* Removed a lot of the borders on the file header. The header is now one
  box instead of three or four.

* The moved line indicators are simpler and less bulky. The font size
  has been reduced, the complex background is gone, they have more
  consistent padding, and they are now flush up against each other.

* The table borders are rounded, making them more consistent with the
  other boxy bits of the UI.
Switch our JavaScript compressor to UglifyJS.

We were using jsmin for compressing JavaScript, but this has some
annoying license issues, and flat-out breaks with jquery.cookie. It's
also just not very good compared to modern tools.

This change switches to using UglifyJS. Uglify has the advantage of
being used and well-tested by large numbers of projects, including
jQuery. It's easy to install (npm install uglify-js), and since we use
npm for other tools (lessc, require.js soon), it's nice and consistent.

Another good option would have been Closure, but Closure's really mad at
a lot of our code (probably worth looking into anyway). It also seems to
have some inconsistent installation experiences on MacOS, from when I
first installed it. For those reasons, I'm erring in the favor of npm,
given that we already require it. (Hopefully this also make life a
little easier for our packagers.)

With this change, I can build working JavaScript bundles again.
Escape text on hidden content dividers.

ReviewBoard shows you a certain amount of context around the changes.
Above
this you're provided with two options...

  [+] 1005 lines
  [+] public void titlesModified(List<Title> titlesAdd, List<String>
      titlesDelete,

This is all fine and well, except in the case of content like that shown
above.  'Title' coincidently belongs to an html tag, and including it
breaks the html parser for the page (as it would with '</script>' and a
few other things). HTML escaping these lines to prevent this.

The main visible result is that diff hunks beyond the first fail to
load. In firebug you get the error of...

Uncaught ReferenceError: setFileAttachmentComments is not defined

Reviewed at http://reviews.reviewboard.org/r/4330/
Fixes bug #2612
Merge branch 'release-1.6.x' into release-1.7.x
Merge branch 'release-1.7.x'
Fix the Review and Ship It actions on the diff viewer page.

The diff viewer page defined a new list of event handlers, but didn't
extend the parent's list, causing the Review and Ship It actions to do
nothing. We now extend it properly.
Remove a bunch of unused graphics.

We had a variety of images from the past, some of which weren't even
ever used. These images are unused today, and there's no plans to use
any of them in the future, so get rid of them. This saves about 50KB
from our packages.
Add JavaScript for validating diff files.

This is the client side of the diff validation resource. To use this, one
instantiates the model, sets the repository/diff/parent diff/basedir, and calls
save(). Either the "success" or "error" callbacks in the options object passed
to save will be called, based on whether the diff parses correctly and the
source files exist.

Testing done:
- Ran unit tests.
- Used this with a number of different diffs that caused various errors.

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