Upgrade how custom user models are handled

This mimics the work Brian Rosner did in django-user-accounts which
involved back porting a feature from Django 1.7, thereby elmiinating
circular reference hell.
1.4