Splitting the djangae User model into separate models for:

1. Using the GAE users API, on a SQL database.
2. Using the GAE users API, on a SQL database, but with a custom user model (subclassed from the Djangae one).
3. Using the GAE users API on the Datastore (nonrel permissions models).
4. Using the GAE users API on the Datastore with a custom user model.

Tickle: #49.
Register the correct user model with the Django admin, but only if it's one of the concrete Djangae user models.

Tickle #49.
Remove nonsense TODO.  Add real TODO.

Touch #49.
Starting to add tests for djangae.contrib.auth.
Fix various bits of silliness in the `Meta` classes of the Djangae contrib user models.
Adding a `GaeUserManager` which allows `create_user` and `create_superuser` to work with the Djangae contrib user models.

(Not that you should really be creating users manually when using the Google-based auth.)

Touch #49.
Renaming 'djangae.contrib.auth' to 'djangae.contrib.gauth'.  Otherwise it's impossible to run tests for it when 'django.contrib.auth' is also in INSTALLED_APPS.

Touch #49.
Removing the need to pass the request object into the auth backend's `authenticate` method.  No need.
Actually rename 'djangae.contrib.auth' to 'djangae.contrib.gauth' properly.

Touch #49.
Fix the `AUTH_USER_MODEL` value in the example auth settings file.

Touch #49.
Adding a test for the auth middleware.

Touch #49.
Remove unused code from gauth/__init__.py which had been copy/pasted from django.contrib.auth.

Tickle #49.
Changing the `GaeAbstractUser` back to having 'username` instead of 'user_id' as its USERNAME_FIELD.

This means that users can be authenticated with either the Google Accounts API or the standard Django auth.

Also gets rid of the need for a custom user manager.

Touch: #49.
Adding functionality to allow User objects for Google-Accounts-based users to be pre-created before they log in.

Needs tests.

Touch #49.
Adding a test for the user pre-creation stuff.  Making the user pre-creation stuff actually work.

Because django's standard `UserManager.create_user` enforces that the `username` must not be empty, I've added a custom manager with a `User.objects.pre_create_google_user ` method.
Making sure we normalise the email address consistently in the various different places.

touch #49.
Merge pull request #71 from potatolondon/49_abstract_gae_user

Allow custom user models (Issue #49)