Refactor get_model_ct to handle Django 1.7, add tuple version

We have a mix of model _meta access which usually expects strings but in
a few places needs raw values. This change adds support for Django 1.7
(see https://code.djangoproject.com/ticket/19689) and allows raw tuple
access to handle other needs in the codebase
Consolidate model meta references to use get_model_ct (see #981)

This use of a semi-public Django interface will break in Django 1.7
and we can start preparing by using the existing
haystack.utils.get_model_ct function instead of directly accessing
it everywhere.
Haystack admin: refactor to use get_model_ct_tuple
Refactor simple_backend to use get_model_ct_tuple
Use get_model_ct_tuple to generate template name
Tests: add MIDDLEWARE_CLASSES for Django 1.7
Unpin elasticsearch library version for testing
Tests: Whoosh test overhaul

* Move repetitive filesystem reset logic into WhooshTestCase which
  cleans up after itself
* Use mkdtemp instead of littering up the current directory with a
  'tmp' subdirectory
* Use skipIf rather than expectFailure on test_writable to disable
  it only when STORAGE=ram rather than always
Django 1.7: ensure that the app registry is ready before tests are loaded

The remaining test failures are due to some of the oddities in model
mocking, which can be solved by overhauling the way we do tests and
mocks.
Mark expected failures for Django 1.7 (see #1069)
Update tox Django version pins
Django 1.7 compatibility for model loading

This refactors the previous use of model _meta.module_name and updates
the tests so the previous change can be tested safely.

Closes #981
Closes #982