support for primary keys fields other than id

I've seen pk is used all over the models.py file except in get_product. This generates errors if the product has not an id field (but another primary key). The proposed patch solves the problem. 
Add a skeleton project so that the tests can be run
Add proper _ escape to markdown
Add Cart model object to request via middleware
Add add_item to Cart model so that cart.cart.Cart doesn't need to exist
Add remove_item to Cart model
Add items() method to Cart model to return items in cart
Add summary method to Cart model to get sum total of the items
Add is_empty and empty methods to Cart model
Add item_count method to Cart model
Remove unused cart/cart.py module and fix datetime timezone warning
Refactor tests to share User fixture
Change process_request to not return anything
Merge remote-tracking branch 'furins/patch-2' into middleware
Change Cart query to use pk instead of id
Add CartContextProcessor to add cart to the context
Remove context processor since template context has access to request