Release Djblets 0.8.
Fix modalBox click handler to respect disabled state

The button's click event used to fire in a modalbox and destroy it, even when
the button is disabled. I added a check that the button is enabled before
firing the default click event in a modalbox.

Testing Done:
1. Click the button when it is disabled, the modalbox stays and doesn't get
   destroyed.
2. Select a file, click upload button, click event fires normally.

Bugs closed: 3338

Reviewed at https://reviews.reviewboard.org/r/5816/
Bump to 0.8 alpha 1 dev.
Bullet-proof some extension and URL uninitialization code.

We hit some nasty issues where uninitializing an extension failed hard,
preventing all future attempts at uninitializing. These had to do with
the dynamically-set/removed extension.admin_site attribute, which was
assumed to be available if has_admin_site was True.

We now check for the existence of admin_site instead, and also catch
attempts at removing non-existing URLs in DynamicURLResolver.

Reviewed at https://reviews.reviewboard.org/r/5849/
Trivial fix for box title styling in config forms.

Config forms weren't defining a box-head div around the title, which
could end up causing styling problems. This just adds the div.
Set the BRANCH in .reviewboardrc for release-0.8.x.
Merge branch 'release-0.8.x'
Attempt to handle threading-related issues with extension reloading.

We observed some issues in a mod_worker environment where attempts to
reload extensions would fail, causing state to become corrupted, leading
to more and more errors. Some of these cases were made more
bullet-proof, but we didn't fix the core issue.

This change attempts to prevent what may be causing the issue by
allowing only one thread to reload the list of extensions at a time.

We have a lock set up for reloading extensions (in case two users try to
reload in the admin UI at the same time).

There's a separate lock in the middleware that's a bit smarter about
calling load(). It checks if the extension state has expired, tries to
grab a lock, and then checks again for expiration. The goal there is to
not have a bunch of threads that are waiting decide they're all going to
trigger their own reloads.

Unit tests have been written that hit issues both during uninit and
during init of extensions. These mirror the errors we've been getting
on reviews.reviewboard.org with Review Bot. With the fix, these tests
pass.

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