Only register receivers in models.py for Django < 1.7

In Django >= 1.7 this will be done via the AppConfig
Implement AppConfig objects for non-dashboard apps

Also register the signal receivers in the ready() method for 1.7+
Remove solr.thumbnail from test config.

This is already set in the get_core_apps() and duplicate apps throw an
error in Django 1.7+
test_settings should override OSCAR_SETTINGS

Not the other way around :-)
Conflicts:
	tests/config.py
Restore the middleware_classes as used in Django < 1.7

Django 1.7 removed most middleware classes from the default config
Update supported Django version

This means testing against the release candidate, which should be
reasonably safe.
Require Sorl 11.12.1 beta

It is now required for both Django 1.7 and Python 3 support. To keep
things simple, we now require it across the board.
Move migrations into south_migrations directory

This change might need to be re-applied if more migrations get added
before this PR is merged into master.

More changes need to be done regarding migrations; this commit just
moves them out of the way so that Django doesn't pick them up.
Remove outdated settings and fix test runner warning with Django 1.7

ADMINS and MANAGERS aren't expected by Oscar, so we can safely
remove them. ADMINS and MANAGERS is kept for the sandbox as the hosted
sandbox (latest.oscarcommerce.com) uses the same settings and David
wouldn't get error messages otherwise.

Django 1.7 test runner changes are explained here:
https://github.com/django/django/blob/214d1e1b0f1574ecab856f0096e409109efa9523/django/core/checks/compatibility/django_1_6_0.py#L17
tl;dr: Setting it explicitly stops an annoying warning.
Explicitly set app_label on all models.

Required for Django 1.7 when overriding apps
Conflicts:
	oscar/apps/partner/abstract_models.py
Use altered StockRecord model in tests

The test suite brings it's own stock record model for testing. Django
1.7 requires that we only import models from apps in INSTALLED_APPS, so
we need to use it to avoid clashes.
Use new app registry to load models

This commit mostly abstracts away from the app refactor that happened in
Django 1.7. It is modelled after recommendations by @aaugustin.

It also introduces a new model_registered check, which can be used
during initialisation to safely register Oscar's models only if they
haven't been registered by a fork app before. This is necessary as
Django 1.7 enforces that models are only registered once; previously the
second declaration would just be ignored silently. That is why e.g.
"from oscar.apps.catalogue.models import *" would work even if one
declared an own catalogue model.
Only declare Oscar models if they haven't been registered before

This is necessary, as Django 1.7 enforces that a model can only be
registered once. Previously, declaring a model a second time would lead
to the second declaration being silently ignored.

The changes have been automated by this gist:
https://gist.github.com/maikhoepfel/05e047e0205f576da1a6
Remove logic special-casing for < Django 1.5

Support for Django 1.4 and below has been removed, so there's no need
for checking for it anymore.
Set DateTimePickerInput.format on Django 1.7+

Conflicts:
	oscar/forms/widgets.py
Add AppConfigs for dashboard applications

The main benefit of this is that we relabel dashboard applications to a
format of "<original_app>_dashboard" and thus avoiding name clashes.

We should nonetheless consider moving them into the original app's
namespace, as suggested in #1383.
Skip South migration tests in Django 1.7

South isn't supported in Django 1.7 and upwards, so we can only skip
them.
Fix AutoSlugFieldTest.test_17_migration test
Standardise Meta classes across models

* Standardises spelling for verbose names to only start to not be
  title'ized
* Adds missing app_labels
* Orders attributes alphabetically
* Always inherits from parent's Meta class as it's good practice
Handle app_labels for custom users

The app label needs to be the same that is used in the AUTH_USER_MODEL
setting to specify the custom user. For Oscar's AbstractUser, we
shouldn't set an app label; Django's autodetection should work in most
cases.

It in facts works for the test suite's custom user as well; but as we
specify app labels everywhere, we might as well specify it there.