Shopping cart

First draft, shopping_cart exercise solution
These are all great cases that cause a huge amount of headache when dealing with discounts (we actually have discount codes in the prod apps, and we deal with this shit ALL the time.)