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
Test improvements.

- use a context manager to test `_meta` model values. This replaces  `setUp()` and `tearDown()` with a more obvious mechanism.
- don't use testcase-wide models; setup the necessary models directly in the tests they are needed in.
- Foobar is a common model, so remove the duplicate code determining its template path
- in all cases the `expected` value is what it should be. Don't inconsistently coerce it into a list in the assertions.
Coverage improvements.

- don't worry about the deprecated stuff
- don't worry about the Django-version-specific stuff
- streamline an exception assertion
- don't worry about the rendered_template cache that isn't actually used during that TestCase
.gitignore update
Readme - list supported Django versions