Make some improvements to our changesets code.

The existing stuff for changesets is pretty heavily biased towards
Perforce--from assuming that the changeset ID will only be a number, to doing
some queries that will only make sense for servers that support pending
changesets with a server-side representation.

This change adds a "supports_pending_changesets" property to scmtools and gates
things based on that.

Testing done:
Ran unit tests, used this in conjunction with my post-commit branch.

Reviewed at http://reviews.reviewboard.org/r/4236/
Add a set of views for managing reviewable pages.

This introduces three new views for managing the reviewable pages.

ReviewablePageView is the main/base class for reviewable pages. It
constructs all the important objects, listens for updates on the review
request from the server, and handles certain page actions.

ReviewRequestPageView extends that, and owns the ReviewBoxListView and
the diff fragment loading.

DiffViewerPageView is for the diff viewer page. It's very small right
now, but will grow.

These are instantiated on the appropriate pages. The bulk of the
initialization comes from a .js template file, which handles all the
main parameters to the page views. The pages can provide additional
parameters as well.

With this, I was able to get rid of a bunch more globals, which is
always good.

Also, reviews.js is now gone! Tada!
Fix a regression with the margins for comments on the review boxes.

My review dialog change broke the margins for comments on the review
boxes. This restores the rule.