Remove null=True on CharFields and others

Reviewed CharFields, EmailFields, TextFields, etc.

Some fields were left unaltered:
* proxy_class rely on unique=True, and that only works sensibly with
  null=True
* The same is true for Product's UPC
* Because order's Line model UPC field usually gets fed the Product's
  UPC, it's least intrusive to still allow null=True there
Subtle changes to handle '' instead of None

Tests failed on a few occasions, because CharFields were set to None or
expected to be None.
Remove several code paths exclusive to Django 1.4
Document why AUTH_PROFILE_MODULE is still supported
Correctly retrieve product class for variant products

Variant products don't have an own product class but use that of their
parent product instead.
Adjust basket line to retrieve strategy from basket instance

We don't need to assign the strategy onto the line directly now that we
don't support Django 1.4.
Define __repr__ for the core Price class
Update test factories to use partner_name kwarg for partner name

Using "partner" is easily confused with passing an actual partner
instance.
Align options for Partner.name and order's Line.partner_name field

Partner name's are allowed to be empty, but Line.partner_name wasn't.
This caused orders to fail when the partner name was indeed empty, as
reported in #1206.

So the field options for both have to be identical. Unfortunately, that
means allowing null=True for Line.partner_name. But dropping null=True
from CharFields should be done as a separate effort all over Oscar's
codebase.

Fixes #1206.
Prevent deleting product classes when products are still assigned

A canonical product should never have it's product class deleted. Thanks
to @mbertheau for suggesting.
Merge pull request #1248 from mbertheau/fix-variant-product-class

Correctly retrieve product class for variant products
Incorporate ProductListView into ProductCategoryView

Now that Oscar's simple search has been removed, ProductListView does
nothing but show all products. It's been incorporated into
ProductCategoryView.

ProductListView used to give out an invalid summary; this is now fixed.

ProductCategoryView used to pass 'categories' in the template context,
but it wasn't used.
Remove legacy URL route to access categories

It's been unofficially deprecated in 0.6 already.
Merge branch 'master' into issue/584/charfieldswithnull

Conflicts:
	oscar/apps/address/abstract_models.py
	oscar/apps/catalogue/abstract_models.py
	oscar/apps/customer/abstract_models.py
	oscar/apps/order/abstract_models.py
	oscar/apps/partner/abstract_models.py
Add forgotten migration for UserAddress.phone_number

That was an oversight. Don't think it caused any harm.
Put reviews apps models under South migration control

This was missed so far. Oops, sorry about that!
Any existing deployment will have to run

$ ./manage.py migrate reviews 0001 --fake
Merge branch 'master' into issue/584/charfieldswithnull
fixed code block indentation on docs
Data and schema migrations for removing null=True on CharFields

The data migrations convert any field values that are None to ''.

After second thought, the field changes on ProductAttributeValues have
been undone again. It seems more consistent with the other fields.
Merge pull request #1249 from wujiang/master

fixed code block indentation on docs