Fix fetching commits by branch on GitHub.

When I fixed filtering of SVN commits by branch, several versions
ago, I broke filtering by branch on GitHub.

The New Review Request page was no longer passing the starting SHA,
which GitHub needed, resulting in all commits being returned. This call
has been fixed.

It's worth noting that the GitHub API allows for filtering by branch,
but you can't both use that and SHAs for pagination. The SHA is good
enough, if provided, so we'll continue to use that, falling back on a
branch if only a branch is provided. The code has been updated with
documentation to cover this.

Reviewed at https://reviews.reviewboard.org/r/6575/
Merge branch 'release-2.0.x'
Remove the defaults from the newer JSONFields.

The newer JSONFields added to WebAPIToken and WebHookTarget had a
default value, which MySQL is not okay with. This removes the defaults
and sets them to null by default, like every other JSONField we use.
Remove the initial value for WebHookTarget.extra_data in the evolution.

The original evolution adding the WebHookTarget.extra_data had an
initial value, and even with changing that in another field, it will
still apply on existing installs. This needs to be modified in order to
allow installation on MySQL.
Sandbox reviewboard.attachments.mimetypes.MimetypeHandler

Extensions that create a MimetypeHandler subclass can throw exceptions inside
Review Board. The sections of Review Board that call those methods have been
sandboxed.

Now when a MimetypeHandler subclass from an extension throws an exception,
Review Board logs the errors. The error logs give enough information to find
which method in the MimetypeHandler subclass threw the exception.

Testing Done:
Unit tests have been written to make sure that functions from an
MimetypeHandler subclass have been called, and when an exception is thrown it
gets logged.

The tests fail without the sandboxing, and succeed with it.

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