Split all promotion models into abstract and concrete 

Pavol [raised](https://groups.google.com/forum/?fromgroups=#!topic/django-oscar/o48woWE8lF0) a good point that currently promotion models aren't easily overridable as e.g. ``AutomaticProductList`` doesn't have it's own abstract base class.