Fix tests for product class dropdown changes

On my local machine, django-dynamic-fixture created product classes
where the slug and primary key were identical and the tests passed
although the check was wrong. Luckily, Murphy's Law works in our favour
on Travis CI, and that failed and spotted it.

This commit fixes the assumption that the redirect view expects the slug
(which it doesn't since the last commit), and ensures that the generated
product classes are non-numeric.
Introduce django-extensions' AutoSluField

A lot of Oscar's models have slugs that are populated from other fields
in the respective save() methods.
But currently there's no logic to check for duplicate slugs.
AutoSlugField does both the population and ensures uniqueness.
Add tests for AutoSlugField

Taken from django-extensions with some adapting to our needs.
Allow explicitly setting slug field even if saving for first time

E.g. Modelname.objects.create(slug='123', name='hi') would otherwise not
work, as add was True (first time save) and AutoSlugField's logic would
just create a slug from the name. It now checks if the slug field is set
already, and if it is, just returns the set slug.

It is important to note that explicitly specifying a slug does skip the
uniqueness validation.
Turn several SlugFields into AutoSlugField

I tried to be conservative and mostly converted SlugFields that have
unique=True set.

For PaymentEventType and CommunicationEventType, it was discovered
that setting unique=True was likely forgotten.

As far as I could tell, no forms needed to be changed as they all
exclude the affected slug fields anyway.