Remove hard dependency on HG for tests.

The tests for the commits and branches resources used a mercurial repository to
test for repos that didn't support the calls, but didn't check to see if hg was
installed. This resulted in tracebacks for these two tests. I've changed this
to use the CVS tool for these tests instead, which doesn't have any external
dependencies.

There's also one test in the diffviewer code that just should be skipped when
mercurial isn't installed.

Testing done: Ran unit tests
Reviewed at https://reviews.reviewboard.org/r/4709/
Add a new revision selector UI.

This change gets rid of our old rows of boxes in favor of a new slider widget.
The slider has ticks for "orig" (the original revision) and each diff revision.
By sliding one of the two handles around, the user can select any individual
diff revision, or an interdiff.

There's currently one shortcut, where you can click an individual number to
jump straight to that diff. I've added a pointer cursor here to help make this
discoverable. I'd also like to add the ability to click and drag across two
labels to jump to an interdiff.

The rest of the UI around this (the revision label, comments hint, and others)
all jump around way more than I'd like. I'm currently playing with a few
designs to make it so nothing will move around when the info changes.

Testing done:
- Played around a lot with the mouse handling trying to get it to break. The
  "grab" works pretty well.
- Selected various revisions and interdiff revisions. Saw that the correct one
  was loaded all the time.
- Checked that the UI didn't show up when viewing a single revision.

Reviewed at https://reviews.reviewboard.org/r/4695/
Move the extensions documentation into the user manual.

A lot of people who are interested in writing extensions aren't seeing this,
because it's currently buried in the "codebase documentation". Since extensions
aren't part of the codebase per se, this should be part of the user manual
instead.

Testing done:
* Built the user manual html and checked that I could see the extensions
  documentation and that links all worked.
* Built the codebase html and saw that extensions were gone.

Reviewed at https://reviews.reviewboard.org/r/4728/
Update the "Creating Review Requests" documentation for the new hotness.

I've rewritten all the documentation dealing with the new review request page
to explain the new UI and the various workflows that it enables.

Testing done: Generated html docs and read through the new text a few times.
Reviewed at https://reviews.reviewboard.org/r/4717/
Support storing and retrieving extra data for comments.

BaseComment and CommentEditor now support storing and retrieving
extra data (usually used by extensions) for comments.

BaseComment has an extraData attribute, which is a dictionary of
keys/values. When saving, each entry is properly serialized in the
request to set the appropriate key on the server. When loading from the
server, the dictionary is set from the response.

CommentEditor has a similar attribute, but with nice wrappers that
extensions can use to set the fields, as extensions are more likely to
deal with a CommentEditor than a Comment. There's setExtraData and
getExtraData, which manipulate the attribute. The resulting state is
then copied over to the comment when saving.