Cdodge/shopping cart rewrite

I don't know if you have time to do this now, but if you're doing the refactoring of the Course Code generation to move it into the models from the instructor dashboard, this is another place where code should live in the models.

Instead of having the view figure out how to cleanly delete items that have associated coupon redemptions, the item's `delete()` method should be the place that knows how to do that.  Meaning the logic for `remove_code_redemption` should just belong in the `delete` method of `PaidCourRegistration` and `CourseRegCodeItem` models, and also then that function gets simpler because it doesn't have to handle trying to delete the artifacts for multiple subtype of `OrderItem`.