(WIP) Cdodge/shopping cart rewrite

There's way too much data duplication here.
`order_items`, `shoppingcart_items`, and `course_names` all overlap in the information they carry.  Duplication can lead to inconsistency.  It seems that a simple, single list of `(order_time, course)` would be sufficient, correct?  Can we just refactor usages of `order_item` to be that tuple, and eliminate `shoppingcart_items` and `course_names`?

If shoppingcart_items is just a list of `(order_item, course)`, we shouldn't be duplicating the data.