Initial work on a new Backend that allows Models to define their own template finding method.

This is similar to how South uses `south_field_triple()`; if the model supplies that method, it'll use it, otherwise it'll do the normal template lookup.

BasicLayoutBackend is functionally unchanged.
Move and unify tests to cover both new Backends.
New feature - can now specify a different base template directory.
Introduce mixins primarily for use with the new ModelProvidedLayoutBackend. Add one of these to a model for easy template lookup by `slug`, `full_slug` or `type`.
Tests - slight improvement to mixin testing.

Using `backend_class` aligns with how the backend test mixin works.
We only need the setup stuff once, not before every individual test.
Add tests to include abstract and proxy models.
Readme and docstrings for the new backends.
Merge branch 'model_provided_backend' into v1.3.0-prep

Conflicts:
	armstrong/core/arm_layout/backends.py