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.
 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.
Allow disabling redirecting when using old product or category URL

It is hard to re-use the category view or product view when there's more
than one valid URL per product/category. E.g. for my site, categories
are accessible under /<brand>/<model>/<category>/.

A global setting wasn't introduced because I assume that when one
requires trickery as above, it's likely that the view has to overridden
anyway.
Changes around six usage

Discussion around #1200 highlighted that we must be aware of differences
between the versions of six that Django ships and the one we use.

In general, the external version of six is the best choice for Oscar,
because it allows to depend on a specific version of six. The multiple
Django versions we support each come with different versions of six,
which makes it unattractive to depend on them.

When interfacing directly with Django, it should be decided on a
case-by-case basis if it's more appropriate to use Django's supplied
version of six or the external one.

In the case of the UppercaseCharField, Django clearly documents what
needs to be done to get it to work with both Python 2 and 3 in
https://docs.djangoproject.com/en/1.6/howto/custom-model-fields/#the-subfieldbase-metaclass
Those instructions are the same for all versions of Django we support.
Hence it's been decided that it's best to switch to Django's recommended
way of declaring the metaclass, and using Django's version of six for
it.
Ensure category field is multivalued in sandbox Solr schema
Don't disable form button if HTML5 form is invalid

If HTML5 form has invalid form fields (like <input type="email">) the form will not be submitted on button click. The button must not be disabled to allow form submit after the form field is updated to be valid. Registration form is a good example, where if email is not valid it is not possible to submit the form after correcting input as the button stays disabled.

This change will not disable button on click if it is inside a form with invalid fields.