Add sandboxing for DataGrid columns.

Extensions that create a Column subclass (using the DataGridColumnsHook) can
throw exceptions inside Djblets. The DataGridColumnsHook hook and the parts of
Djblets that call those methods have been sandboxed.

Now when a Column subclass throws an exception, Djblets logs the errors with
enough information to find which method in the Column subclass threw the
exception.

Testing Done:

Unit tests have been written to make sure that functions from a Column subclass
have been called, and when an exception is thrown it gets logged. Tests for
DataGridColumnsHook test that the Column subclass when an exception is thrown
while registering and unregistering a Column subclass it gets logged.

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

Reviewed at https://reviews.reviewboard.org/r/6502/
Adding support for alphabetic pagination to the datagrid.

Updating the paginator in datagrid to allow alphabetic querying to be turned on
by providing the DataGrid object with the current_letter parameter (default
none).

If the current_letter is provided to the datagrid (usually by some child grid
calling the super initializer) the datagrid will simply load a second template
case added paginator.html.

It is the job of the child class (UserGrid in reviewboard) to process the URI,
perform filtering on the queryset, and handle errors.

Testing Done:
- Unit tests all pass
- All button cases manually tested. (Forward, back, first and last arrows,
  each letter).
- Verified that  changes to not affect any other module that inherits from
  datagrid (such as the groups list, or the all review requests list, the
  current 'master' of reviewboard with no changes to the userGrid).

Bugs closed: 829

Reviewed at https://reviews.reviewboard.org/r/6369/
Sandbox errors coming from djblets.extensions.SignalHook callbacks.

Extensions that use a SignalHook to connect to a signal and run a callback
function can throw exceptions inside Djblets. To fix this a new parameter,
sandbox_errors which by default is set to True, has been added to SignalHook.

Now when sandbox_errors is set to True it will wrap the callback function in
another function to log the exceptions that are thrown. If sandbox_errors is
set to False, exceptions that are thrown are not caught by Djblets.

Testing Done:
Two unit tests have been written to make sure the new parameter sandbox_errors
logs exceptions when set to True, and does not log exceptions when set to
False.

The test fails without the sandboxing, and succeeds with it.

Reviewed at https://reviews.reviewboard.org/r/6554/
Merge branch 'release-0.8.x'
Sandbox calls to TemplateHook.applies_to()

Extensions that create a TemplateHook subclass with a new applies_to function
can throw an exception inside Djblets. The part of Djblets that calls that
method has been sandboxed.

Now when a TemplateHook subclass's applies_to() function from an extension
throws an exception, the error is caught and logged.

Testing Done:
Unit test has been written to make sure that applies_to() from a TemplateHook
subclass has been called, and when an exception is thrown it gets logged.

The test fails without the sandboxing, and succeeds with it.

Reviewed at https://reviews.reviewboard.org/r/6545/
Sandbox calls to TemplateHook.applies_to()

Extensions that create a TemplateHook subclass with a new applies_to function
can throw an exception inside Djblets. The part of Djblets that calls that
method has been sandboxed.

Now when a TemplateHook subclass's applies_to() function from an extension
throws an exception, the error is caught and logged.

Testing Done:
Unit test has been written to make sure that applies_to() from a TemplateHook
subclass has been called, and when an exception is thrown it gets logged.

The test fails without the sandboxing, and succeeds with it.

Reviewed at https://reviews.reviewboard.org/r/6545/
Merge branch 'release-0.8.x'