move contents of cart.py to __init__.py to evade a name collision
update test cases to run with python3
changes towards compatibility with python3
minor readability improvements
delete migrations (since the models are reworked)
there tests should be rewritten to suit the new functionality better
simplify models; optimize performance, replace arhaic calls with new ones (this drops the 1.1 support), improve code readability
notify session it's modified after inserting a `cart` pk to it
Initial test
Add a context processor that supplies the cart to the context
Add to Cart:  __contains__, quantity and other methods; Now the Cart class requires a session when instantiated instead of request
Clean up the models; Add TestProduct, a simple model for testing purposes
Rearrange Cart methods to follow lexicographic order
Update the context processor to suit the request -> session arg change
Cart: add a handy batch method called set_products() that sets the content of the cart