Add support for specifying a field's widget for tool plugins.

Previously, we could only use the default widget for each field in a tool
plugin's options. This change allows us to specify which widget we want to use
on a field, along with any widget-specific attributes.

I also added a check to make sure that the field class we get is an actual
Field class.

Testing Done:
- Made fields without widgets specified.
- Made a field, specifying the widget but no attributes, and saw the widget's
  default attributes get used.
- Made a field, specifying the widget and its attributes.

I saw that the above fields were displayed correctly on the "Change Review Bot
Tool" page (see the attached screenshot), and was able to modify them.

- Tried to make an invalid field, and saw the appropriate exception.
- Tried to make an invalid widget, and saw the appropriate exception.

I also checked that all existing tool plugin forms display properly.

Reviewed at https://reviews.reviewboard.org/r/6240/
Add a configuration option to the JSHint tool plugin.

This adds a `config` option to the JSHint plugin, allowing admins to specify
which JSHint options should be turned on or off. The contents of a .jshintrc
file can simply be copied into this field.

I also fixed a small bug in make_tempfile() (the default value of None for
`extension` would cause an error since mkstemp()'s `suffix` must be a string).

Testing Done:
Without any config specified, I published a review request, saw the worker run
jshint without the --config flag. The published review did not include issues
on unused variables.

Using the same config as reviewboard/static/rb/js/.jshintrc, I published a
review request, and saw the worker run jshint with the --config flag this time.
The published review included issues on unused variables.

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