Support for custom cart item class

Now it is (easily) available to override only `CartItem` class' functionality. The custom class (extending the original `CartItem`, or a brand new class with corresponding methods/properties) can be set within django settings (`CART_ITEM_CLASS`).

This comes in handy when you have some special pricing model like special discounts for quantity > 1.