Fix the name of a unit test suite.

The filename and not reviewable name was being used for
ReviewablePageView unit tests.
Add a get_change method to SCMTool and HostingService

This change adds the final piece of integration API on the backend that we need
for post-commit reviews--the ability to fetch the commit message and diff from
the version control system given a revision ID. This is implemented for SVN and
GitHub, just like the get_branches and get_commits methods.

Testing done:
- Ran unit tests.
- Used this with my post-commit UI for both github and svn repos.

Reviewed at http://reviews.reviewboard.org/r/4284/
Move the diff viewer whitespace toggles into the new objects.

The Show Whitespace Changes and Show Extra Whitespace toggles now live
in the new objects and interact with the DiffReviewableViews to change
the state.

The cookie management now lives in UserSession. Callers just need to set
an attribute and it will update the cookie. This change introduces
jquery.cookie for actually setting and getting cookies, because
JavaScript's native cookie support is terrible.
Clean up imports in hostingsvcs and scmtools tests

This cleans up the now-obsolete md5-vs-hashlib fallbacks, as well as imports
much more specific items (in most of scmtools/tests.py's imports, we only cared
about a single symbol).

Testing done: Ran unit tests.
Reviewed at http://reviews.reviewboard.org/r/4294/
Fix Clear Case popen problems on Python 2.7.x.

On Windows 7, using Python 2.7.x, Clear Case would pop up a console
window every time popen was invoked. We now change the shell= parameter
depending on whether we're running Windows 7 and Python 2.7.
Merge branch 'release-1.7.x'
Improve the look of the extensions list.

The extensions list never really got any love, and looked pretty bad. It
didn't handle long descriptions very well, and the action links were
just kind of big and too floaty. The author was also just kind of placed
there, without much thought.

The new look places the author in the top-right of the extension's box,
out of the way but easily seen.

The description and actions are aligned on their own rows, indented
slightly from the extension name. The actions aren't bold anymore, so
they don't steal attention away from the extension names.

The descriptions don't overlap with actions anymore, due to the new
placement. They also have a decent margin from the right, so that they
don't appear to run up against the author very easily. This adds some
breathing room.

The version number isn't so close to the extension name, and is slightly
faded.

The bottom of the box is now curved, and the box has a slight shadow,
matching the rest of the admin UI.
Merge branch 'release-1.7.x'
Enhance RB.Diff to be able to create new diffs.

The existing diff model didn't do very much, and was really meant for dealing
with existing diffs. This change adds some attributes and methods that allow it
to be used to create new diffs.

Testing done:
Used this in another change to create a diff from javascript.

Reviewed at http://reviews.reviewboard.org/r/4303/
Move .clearfix to defs.less

clearfix is generic code, and should really be in defs, so we can use it from
everywhere.

Reviewed at http://reviews.reviewboard.org/r/4277/
Merge branch 'release-1.7.x'
Fix key bindings for the diff viewer.

Key bindings didn't always work, due to where they were registered.
They're now registered on the document instead of the element, as they
used to be before the rewrite.

On top of that, the key binding code now filters out any keys pressed on
input or textarea elements.
Fix jshint warnings.

This fixes a bunch of warnings in our JavaScript that JSHint reported.

A .jshintrc has been created which will suppress warnings about
__proto__ being used (needed in _.super), and operators like "&&", "?"
and ":" being at the beginning of lines.

This also turns on a bunch of jshint options for things we want to
enforce, like one var statement at the top of a function, unused
variable checks, trailing comma detection, and more.

One thing to note is that we use some reserved keywords as keys, which
causes warnings in JSHint unless they're always quoted. This so far only
came up with the new RepositoryBranch. I've quoted them, but we may want
to consider coming up with new standardized names, such as "isDefault".
Move the resource models/collections into js/resources/.

As part of an attempt at reorganization before moving to require.js,
I've moved all the resource models and collections into a js/resources/
directory.

There are no code changes, aside from changing the descriptive name of
each unit test suite to have "resources/" prefixed.
Fix "whitespace-only changes" toggle for files with only whitespace changes.

A change made a while back broke the logic for determining when to show
the "This file has only whitespace changes" description. That
description was necessary, because we keyed off the visibility toggles
for whitespace-only chunks based on it. So, the entire feature was
broken.

That description element has been restored and the toggle works again.

Fixes bug #2941
Merge branch 'release-1.7.x'
Move the diff highlighting code out and fix position problems.

The diff highlighting now lives in a ChunkHighlighterView object.
This takes a chunk element (a tbody/thead in the diff viewer) and
surrounds it with black borders.

This is a port of the old code, but with some fixes and changes.

The old DOM mutation events are no longer listened to, as they don't
seem to be needed, from my testing.

The positions of the borders are no longer off by several pixels on
every browser. tbody dimension calculation is horribly inconsistent
across browsers, so we're now using the table's left and width. That
takes care of the most noticeable problems. I've also done some tuning
to make the vertical position work properly across Chrome, Firefox and
IE.
Fix up all the diff viewer anchor code.

The diff viewer anchor code was in a semi-working state. There were
still calls to the now-removed 'gotoAnchor', which errored out, and
there was a hacky global function for the individual DiffReviewableViews
to scroll anchors.

Now the views handle all anchor click events. DiffReviewableView
triggers events when the file header or a chunk is clicked, and
DiffViewerPageView reacts to that. The PageView also handles all clicks
from the index that comes before the diff.
Fix a couple lintian errors in the new diff chunk highlighter.

Some commas were used where semicolons should have been used, due to
moving away from using a var statement.
Listen for keyboard events on document.body.

My previous keyboard event fix was set to use document, but even this
wasn't good enough. Going to document.body now, which works everywhere.