Remove null=True on CharFields and others

Reviewed CharFields, EmailFields, TextFields, etc.

Some fields were left unaltered:
* proxy_class rely on unique=True, and that only works sensibly with
  null=True
* The same is true for Product's UPC
* Because order's Line model UPC field usually gets fed the Product's
  UPC, it's least intrusive to still allow null=True there
Subtle changes to handle '' instead of None

Tests failed on a few occasions, because CharFields were set to None or
expected to be None.
Add start and end times to vouchers
Make test_datetime timezone aware
Merge branch 'master' into issue/1068/voucher_improvements

Conflicts:
	oscar/apps/voucher/abstract_models.py
Add shipping offers as voucher options
Strip whitespace from start/end of search term

Remove whitespace from beginning and end of search term (UPC and Title)
in dashboard
Allow test cases to consider a custom Oscar user model

Most test cases only consider the default Django user model that
contains the username field. As soon as you extend Oscar's AbstractUser
model that doesn't contain a username field, tests that use
ClientTestCase or WebTestCase fail.
Remove several code paths exclusive to Django 1.4
 Make product classes manageable within the dashboard closes #1094
Disallow deletion of product classes with products. ‘Class’ changed to ‘Type’ in UI.
Fix whitespace and line length
Use slug instead of id for product_class in URL

This gives more readable URLs.
Put all widget initialization code in one function.

That way in can be called easily for dynamically added forms.
Add widgets only to visible elements.

That way they're not added to hidden empty form templates. The form
template is cloned when using dynamic formsets. In my experience
the timepicker and select2 get mighty confused when they are cloned.
Therefore the idiom is to leave the hidden empty form without widgets and
attach them after they become visible.
Limit widget initialization to a provided scope.
Use six version from Django

Using standalone version causes issues. Fixes #1200
Merge pull request #1200 from tangentlabs/issue/1200_six

add_metaclass breaks Django 1.6 compatibilty
Increase required version of django-haystack

Django-haystack==2.0.0 breaks update_index.
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.