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