Fixed the styling of the admin login page.

The admin login page had no margin above it. This changes it to include
the admin CSS and to fix up the styles to take up the full width of the
page, in order to match the main login page.
Document how to integrate Review UIs through Extensions.

This is a how-to guide for creating and integrating new Review UIs
using Extensions.

This was written by Sampson Chen, with a few small tweaks by Christian
Hammond for better syntax highlighting, whitespace removal, and minor
code changes.

Reviewed at http://reviews.reviewboard.org/r/3596/
Fixed the styling of the admin login page.

The admin login page had no margin above it. This changes it to include
the admin CSS and to fix up the styles to take up the full width of the
page, in order to match the main login page.
Provide a nicer selector for cache backends compatible with settings.CACHES.

The cache backend selector in General Settings is now much nicer,
providing a dropdown of possible cache types and an appropriate field
for entering the hosts or cache location.

Two entries are provided by default: Memcached and File cache.

If running with DEBUG = True, then "Local memory cache" will also be
available, making it easier to test and debug things.

If some other cache backend is used, then "Custom" will be an option as
well, and will leave the cache settings untouched.

This moves us away fully from the old Django CACHE_BACKEND setting.
Provide a nicer selector for cache backends compatible with settings.CACHES.

The cache backend selector in General Settings is now much nicer,
providing a dropdown of possible cache types and an appropriate field
for entering the hosts or cache location.

Two entries are provided by default: Memcached and File cache.

If running with DEBUG = True, then "Local memory cache" will also be
available, making it easier to test and debug things.

If some other cache backend is used, then "Custom" will be an option as
well, and will leave the cache settings untouched.

This moves us away fully from the old Django CACHE_BACKEND setting.
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/
Merge branch 'release-1.7.x'