Explain why login_required is not applied to views

For some (including me) it might be confusing why certain views are not
protected by login_required. Add comments explaining why it is the case.
Bug: changing protection was not login protected

Anonymous users can see the change password screen when manually
accessing URL /accounts/change-password/

When the form is submitted NotImplementedError is raised.

Solved by wrapping in login_required() decorator.
Enforce changing password follow password rules

During the registration and in dashboard, the new password is required
to have min 6 characters and not be in common passwords. Those rules are
not enforced when changing password in the account section or resetting
password.

Extract password validators into core validators as they are used by
multiple apps. `password_validators` now contains all validators applied
to passwords: DRY principle.

Changed auth tests to have a proper password for password reset.
Use Oscar partial for the form
Clean password reset forms
Use Profile.DoesNotExists

It makes code a little bit more readable
Fixed a bug when trying to edit variant products.
Merge pull request #1217 from linovia/releases/0.6

Fixed a bug when trying to edit variant products.
remove odd </a>
apply missing linebreaks to shipping.notes
use get_model only once
remove redundant and even wrong comments
Added uppercase option to AutoSlugField.
Tests for separator and uppercase options.
Code of communication event type generated with uppercased letters and
underscore as separator.
Changed setup of functional test in dashboard/communication to be passed
with code populated from name.
Replace tax exemptions recipe with a more general US one

Fixes #1266
Import modules (not classes) where possible
Checkout index view enforces basket must be non-empty

This change introduces a new framework for enforcing checkout
pre-conditions. Each view class can define a class attribute
'pre_conditions' which lists method names to run before the class
itself.

Of course, decorators are more conventional for this kind of thing but
they are harder to override and customise.
Add tests for checkout shipping address view pre-conditions
Add tests for checkout shipping methods view pre-conditions
Extract core events into mixin to clean up tests