Two cart classes - SessionCart and Cart

After discussion with @patrys I implemented two Cart representations, one uses only simple types (list of dicts with product ids and names) and second one uses 'normal' model instances.

Main `Cart` class handles `SessionCart` changes and keeps both carts synchronized, so we don't have to care about synchronizing carts in views.