Add support for custom context processors, and make them and apps ref-counted.

This introduces a new Extension.context_processors list, which defines
context processors the extension wants to have available for all
templates.

It also adds protection for both context_processors and apps.
Previously, extensions were assumed to never list an app that another
extension may list, or that the main application lists. Otherwise,
disabling the extension would remove the main item from that list.

The list of context processors and apps are now ref-counted.
ExtensionManager wraps its own access to
settings.TEMPLATE_CONTEXT_PROCESSORS and settings.INSTALLED_APPS.
It won't add new entries if they already exist, and won't remove
entries unless the ref count drops to 0.