Add support for custom fields in extensions.

This introduces two new hooks: ReviewRequestFieldSetsHook and
ReviewRequestFieldsHook.

ReviewRequestFieldSetsHook allows for the creation of fieldsets, or
sectioned groups of fields on the side of a review request.

ReviewRequestFieldsHook allows for the creation of custom fields in any
fieldset. These fields are stored along with a draft and their history
is tracked in the change descriptions. All fields are also
accessible/mutable through the API by making use of the extra_data
support.

Currently, all built-in fields are text-based, but a future change will
allow for more types of fields.