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.