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 seems like some variant of this method might be generally useful as a cached property on the base Engine class? Encouraging its use would help avoid inconsistencies in the handling of app dirs such as the one you currently have (I think) by using Jinja's PackageLoader (see other comment below).

In general, it seems like it would be best for consistent handling of `APP_DIRS` between backends if it was handled entirely in the base Engine class, and subclasses were encouraged to simply use a property provided by the base Engine which is a full list of dirs, in order.