Switch to custom user model

This removes our usage of `django.contrib.auth.models.User` entirely, handling all our user and auth requirements with `users.models.UserProfile`.