Multiple template engines

This PR contains the bulk of the multiple template engines project.

It's still missing tests for the new code in django.template.loaders.
I think the highest priority is that all the places in Django that load files from apps do so in a consistent way. So if Django were to support zipped-egg apps, we should support them everywhere, not just in one template backend. And I don't think that's a priority right now (though if someone submitted a patch, maybe based on code from `PackageLoader`, that gave Django a load-file-from-app API we could use everywhere that also supported zipped eggs, I certainly wouldn't reject that patch.)

Given that we're not going to generally support zipped-egg apps in Django right now, I think it's more valuable for the Jinja2 backend to be consistent with the rest of Django than it is for it to support zipped eggs. If someone needs zipped-egg support, the `TEMPLATES` config makes it easy enough to set `APP_DIRS` to `False` and configure your Jinja2 loaders yourself with some `PackageLoaders`.

Apart from the zipped-eggs support, I actually think that the auto-detection of `AppConfig.path` is fairly robust, correct, and Pythonic. And the ability to set the path manually is a nice fallback for unusual cases.