Fix regression in linkify js, that is causing certain URLs to be wrongly stripped

28878fc ( http://reviews.reviewboard.org/r/3374/ ) has introduced a regression
in reviewboard URL matching inside review descriptions.

URLs like this (spaces added so this doesn't get stripped):
    http://foo.com/?param1=foo & param2=bar

are currently wrongly converted to:
    http://foo.com/?param1=foo&
(and last GET parameter is stripped)

I think this was an unintentional change (accidentally stripping the $ sign at
the end of the regexp). Bonus: whitespace fix.

Testing done:
Put the following urls in change description:
http://foo.com/?param1=foo & param2=bar
http://foo.com/?param1=foo&param2=bar()
(http://foo.com/?param1=foo&param2=bar)

- blah blah (http://www.foo.com/)
- http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#clone()
- http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)
- gwegdss http://www.foo.com/

Reviewed at http://reviews.reviewboard.org/r/3615/
Show draft captions in file attachment review UIs.

When an image (or other reviewable attachment) had a draft caption, it wouldn't
be shown in the review UI header. Fixing this was a pretty simple addition of
the same fallback logic that we use elsewhere.

Testing done:
Set a draft caption on an image attachment and loaded the review UI.

Reviewed at http://reviews.reviewboard.org/r/3606/
Allow ReviewUI Integration through ReviewBoard Extensions.

There's now a ReviewUIHook that extensions can use to register review
UIs for different types of file attachments. This handles registering
and unregistering the UIs.

Reviewed at http://reviews.reviewboard.org/r/3565/
Introducing Thumbnail Integration through Extensions.

ReviewBoard Extensions can now define how to create thumbnails
for specified file attachment mimetypes.

Added FileAttachmentThumbnailHook to generalize a hook point for all files of
all mimetypes. Mimetype Handlers for text-based mimetypes can leverage
`reviewboard.attachments.mimetypes.TextMimetype` by simply overriding
`_generate_preview_html` to define how to generate the HTML used in the
thumbnail, instead of having to redefine `get_thumbnail`.

Testing done:
- Disabled the registration of XMLMimetype in reviewboard.attachments.__init__
- Verified that XML thumbnails now fall back to raw uncolored text
- Copied over the XMLReviewUIExtension from the sample extension branch, and:
- Added XMLThumbnail.py to define the XMLMimetype class for generating XML
  thumbnails
- Modified extensions.py to use the FileAttachmentThumbnailHook to hook
  XMLMimetype into ReviewBoard to handle XML thumbnails.
- Verified that the Extension installs without error
- Verified that Extension-installed XML thumbnails feature work exactly as
  did before.

Reviewed at http://reviews.reviewboard.org/r/3614/
Administrators can associate server SSH key from the Repository form

Administrator(s) of a Review Board instance are given the option to
automatically associate the instance's SSH key with new/existing repositories,
if supported by the hosting service, from the Repository form.

Manually ensured key association completed under the conditions required for
existing repositories:
- Created new repository using hosting service that supports SSH key
  association (GitHub).
- After repository created, edited repository, checking associate SSH key
  form field.
- Confirmed key uploaded to GitHub

Manually ensured key association completed under the following conditions for
new repositories:
- From the admin, added new repository, using GitHub as the hosting service,
  and setting the "Associate SSH key" field.
- Confirmed key uploaded to GitHub

Manually confirmed that correct error message returned when key association
failed. Confirmed that key association not attempted when the form already
contained errors.

Reviewed at http://reviews.reviewboard.org/r/3488/
Revert "Administrators can associate server SSH key from the Repository form"

Christian tells me that we don't want this in 1.7 yet. This reverts commit
0f0c5c346f5e92ded668a1800fbb2b0f0e11d3bf.
Require the Djblets 0.7.6 dev installs.

This should help prevent issues accidentally grabbing a released
package.