Remove product-codes, add 'no-payment-required' payment event
Coupons can optionally be applied to shipping costs
'no_payment' state and order events and callbacks