Add class-based views to replace the built in  views.
remove call to  from WithNextUrlMixin.get_success_url

I was attempting to comply with code found in
`django.contrib.auth.views.login`
(https://github.com/django/django/blob/master/django/contrib/auth/views.py#L42).
In revisiting that code, I clearly misread what was going on there and
the call to `resolve_url` is not necessary.
PasswordResetConfirm should raise an AssertionError when  or  is missing

`django.contrib.auth.views.password_reset_confirm` does this, so we
should too.
Improvements and bugfixes to the views
Use DecoratorMixin instead of decorating as_view manually

This way subclasses are decorated automatically.
Added sphinx documentation
Stole tests from Django

We were able to borrow and repurpose most of the Django auth tests for
our own code.

This also fixes some bugs discovered by the tests:

  - missing duplicate_username error message in UserCreationForm
  - call to memoize was wrong (only one user ever could be returned)
  - admin.site.register, not admin.register
  - python 3 compatibility (Popen.communicate returns bytes, not str)
travis config
Don't use memoize to cache get_user

This causes a memory leak, because every instance of the view is stored
forever in the memoize cache. Instead, manually set a user property on
the view to do the caching.
finish testing the views

Fixes a bug found by the tests -- must pass the user's username to
auth.authenticate, not their email (use get_username).
Add `next` argument support to LogoutView

To retain compatibility with Django's view, LogoutView should be able to
redirect after logging out.

Removes LogoutRedirectView, just use LogoutView with a `url` parameter.