Allow test cases to consider a custom Oscar user model

Most test cases only consider the default Django user model that
contains the username field. As soon as you extend Oscar's AbstractUser
model that doesn't contain a username field, tests that use
ClientTestCase or WebTestCase fail.
Set COMPRESS_ROOT for tests to avoid issue with Django 1.6.2

Django 1.6.2 must have altered the app initialisation process.
django-compressor trips when COMPRESS_ROOT isn't set, whereas it didn't
before.

Fixes #1214
Merge pull request #1120 from tangentlabs/fix/no_username_tests

Allow test cases to consider a custom Oscar user model
Fix ImageInput instead of re-binding image formset

@mbertheau raised a good point that rebinding the image formsets as
added in 0b373df hides any errors in the image formset.
https://github.com/tangentlabs/django-oscar/commit/0b373df5ab76d6fda691fafede0b3e126a91b155#commitcomment-5368878

This fix undoes that change and instead alters behaviour of the
ImageInput widget to not display images that were never persisted to
disk.
Use atomic instead of commit_on_success if available

commit_on_success is deprecated as of Django 1.6, and will be removed in
Django 1.8.
Handle Django's new password reset links

Django 1.6 changed the encoding of the user's primary key. See the
comment in oscar/app.py for an overview.

This commit also reverts the URL syntax for all password reset links to
the style in the Django documentation. It is slightly more permissive,
but shouldn't cause any issues.

This commit also changes a bug in the get_password_reset_url function
where it would ignore the passed token generator and always use the
default one.

Fixes #1203
Switch tests to use JSONSerialiser for sessions

Oscar should support it now, so it makes sense to run the tests with the
less forgiving JSON serialiser.
Remove SEND_BROKEN_LINKS_EMAILS setting

It's been removed in Django 1.6. And as it was set to False in the code,
it can safely be removed as well.
Fix minor typos and PEP8 issues
Add Django compatibility to release notes
Merge branch 'fix/django16compat'
Introduce NullCharField

CharField that stores '' as None and returns None as ''
Useful when using unique=True and forms. Implies null==blank==True.

When a ModelForm with a CharField with null=True gets saved, the
field will be set to '': https://code.djangoproject.com/ticket/9590
This breaks usage with unique=True, as '' is considered equal to another
field set to ''.
Migrate AbstractProduct's UPC field to NullCharField

This will allow saving two products with empty UPC outside of
ProductForm (which had special logic to support it).

Fixes #784
Make countries searchable in Django admin

Fixes #1209
Correct multivalued setting for category in Solr schema
Remove unused views
Merge pull request #1220 from grakic/patch-3

Remove unused views
Only check quantity permissions if > 0

This allows removal of products in the basket if they are not in stock
by setting the quantity to 0
Add tests for BasketLineForm
Merge pull request #1222