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.
Break the "Extending Review Board" document into several pieces.

Having the entire extensions documentation in one big page was getting
unwieldy, and as soon as I started trying to add more information on hooks, it
became impossible to keep track of everything.

This change breaks it out into four inter-linked pages:
- Overview
- Extension Hooks
- Review UI Integration
- Extension Distribution

Testing done:
Built HTML docs and read through everything to verify that the organization
made sense, and checked for broken/nonsensical links.

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