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.