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.
It overrides the `app_dirname` property which raises an exception in the base class.

But I hardcoded the string 'jinja2' again in `get_default_loader()` instead of reusing this definition.

I'll fix it when I move `_get_template_dirs` back the the base `Engine` class and refactor the Jinja2 backend to use it.