Better discounts

Creates a new comprehensive system for discounts integrated with the parts framework.
This will allow discounts to show up in receipts as lineitems, and allows for refunds