Fix handling of free products when calculating basket totals in Python 3.
In Python 2, adding None to the basket total worked, but in Python 3 this raises a TypeError. This fixes the handling of totals to distinguish between a zero price and a non-existent price.
The idea of splitting integration from unittests is good in theory
but leads to a lot of mental overhead. Besides whenever a tests
interacts with a database it isn't a unittest anyway.
Replace assert statements with appropriate assert* method.
Replace 'assert' with 'assert*' method.
Convert tests.unit.forms.widget_tests to use TestCase class.
Convert bankcard tests to use TestCase.
Convert tests.unit.logging_tests to use TestCase.