Prevent circular imports when defining custom shop models

The underlying problem is when you import

shop.models.defaults.bases.BaseProduct

or the other base models in your project. It will also
import shop/models/__init__.py if you then have the
SHOP_x_MODEL set to a Model you later define in this
same file, you will get a circular import. Or if you use
the other solutions so far, django-SHOP will try and import
the custom model before it has been instantiated. The only
way to fix this is to move anything the project needs to
build a custom module outside shop.models. At the moment
that is base models and managers. This needs to be done
in combination with the previous solution, which I have
included here.

There are a few fixes that can be applied to make this
backwards compatible. Are you maintaining backwards
compatibility before 1.0?

Tests are on their way. But right now it is an unusually
sunny day for this time of year :)

Signed-off-by: Simon Luijk <simon@luijk.co.uk>
TestCase to test old import paths for model bases and managers work

Signed-off-by: Simon Luijk <simon@luijk.co.uk>
Allow model bases and managers to be imported from old location

Signed-off-by: Simon Luijk <simon@luijk.co.uk>
Add TestCase for circular import

Signed-off-by: Simon Luijk <simon@luijk.co.uk>
Add an extra test for the changes in load_class

Signed-off-by: Simon Luijk <simon@simonluijk.com>
Merge branch 'master' into circular-import-fix

Conflicts:
	shop/models/defaults/bases.py (Fixed)
	shop/models/defaults/managers.py (Fixed)

Signed-off-by: Simon Luijk <simon@simonluijk.com>
Add failing test for no creating empty cart.
Do not save empty cart (see #147).
Update CHANGELOG.
Merge pull request #153 from bmihelac/fix-54-product-reference-overridable

Added get_product_reference method to Product
Merge branch 'cart-creation' of https://github.com/bmihelac/django-shop into bmihelac-cart-creation

Conflicts:
	CHANGELOG.rst
fix for #134
Merge pull request #154 from bmihelac/patch-1

fix for #134
FIX #155 - Payment API empty cart bug

If there is no current user, api cannot know what is cart for given order
(no request), making it impossible to empty that type of carts.

Also it does not make much sense to clear cart only if is_order_payed(order).
Add croatian translations.
Merge pull request #157 from bmihelac/hr-translations

Add croatian translations.
Make branding of "django SHOP" consistent.

Rules as agreed are noted in the front page of the documentation
(in a vain attempt to make people get it right):

- Normally "django SHOP", "Django SHOP" at the start of sentences
  and django-shop for no-space situations.
Merge pull request #161 from chris-morgan/branding-consistency

Make branding of "django SHOP" consistent.
Added Chris to AUTHORS. Thanks a lot!
Re-sorted the AUTHORS list