Split up extensions/base.py into several files.

Back when the extension support was smaller, everything went into
base.py. This become harder to work with as things grew, so now it's
split up into multiple files.

The orignal base.py still exists, and imports the main classes that were
used previously. It's there for backwards-compatibility, but will be
removed in a future version.
Update to the latest version of django-pipeline.

Now that django-pipeline has an explicit setting for enabling/disabling
media pipelining, and now that we're using Django 1.5, we can make use
of it again. This upgrades us to the latest release of pipeline.
Add support for defining, packaging and using static media bundles.

Static media in extensions has been pretty bad. It took work on the
developer's side to get static media installed and used, and there was
no consistency.

Now, the extension framework handles all this.

Extensions can define css_bundles and js_bundles attributes. These
follow the Django Pipeline bundle format, with all paths being relative
to the extension's static directory. The extension framework will
handle transforming these into paths that can be looked up using the new
static finders, which will find them correctly whether they're in a
'setup.py develop' environment, or from an installed package.

Bundle names won't conflict, as they'll also be transformed to be
namespaced by the extension ID.

If a bundle's name is "default", it will appear on all pages by default
(assuming thet template for the page loads extension bundles). This is
the replacement for the newly introduced js_files list.

The new ext_compressed_js and ext_compressed_css template tags allow
other bundles to be loaded. They're passed the extension and bundle
name. TemplateHook now passes the extension to the context of any
rendered templates, so these can be passed in.

This improves packaging as well. A project implementing the extension
support subclasses djblets.extensions.packaging.BuildStaticFiles and
defines a couple properties, and then a setup.py just needs to fetch the
cmdclasses provided by the project. Once done, any defined bundles in
any extension will be automatically run through Pipeline and placed into
the resulting package (or installed, if using setup.py install). This
makes it extremely simple to deal with static media in an extension.
Give Frederik Braun credit for the JSONField security report and fix.
Merge branch 'release-0.6.x' into release-0.7.x
Merge branch 'release-0.7.x'