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.
Move from reviewableIDField to defaultCommentBlockFields in Reviewables.

reviewableIDField was used to indicate which ID field in the
Reviewable's attribute list should be populated into any newly created
CommentBlocks by default. This wasn't very clearly named, though, and
wasn't sufficient for diffs. With diffs, you have two identifying pieces
of information: The filediff's ID, and possibly the interfilediff's ID.

This new field, defaultCommentBlockFields, is a list (or optionally a
function returning a list), and can be used for more than the ID, if
needed.

This has backwards-compatibility with existing reviewables, but will log
a deprecation warning.
Add a commit_id field to ReviewRequest

This change adds a new field called 'commit_id' to the ReviewRequest model. This
field obsoletes the 'changenum' field. There's also a property called "commit"
which will aggregate together the old "changenum" field and the new "commit_id"
field.

This new field is a 64-character string instead of an int, in order to handle
SCMs that don't use numeric revisions (like git).

Testing done:
- Tested the migration with a database that had review requests with both null
  and non-null changenums
- Ran unit tests
- Did some smoke testing of various pieces of UI that deal with changenums

Reviewed at http://reviews.reviewboard.org/r/4237/