Initial work on generic discounting
Separated Discount from OrderCoupon
Converted CouponsModelAdmin into a more generic DiscountModelAdmin.
Created get_matching function on OrderDiscount to get a list of matching discounts for a given order. This list can then be culled further to get the best possible discount.
Tests & tidy up.
Initial work on constraints system
Split discount constraints out, fixed some issues with them, and included them as DataExtensions
Fixed some broken constraints and logging messages.
WIP: improving constraints system, and the way discounts are worked out
Plenty of testing, but some are failing
Added actions classes
Allow discounts to require that all selected product be present
Fixed many order coupon tests.
Introduced shipping discount.
Removed OrderCouponModifier...in favour of just using OrderDiscountModifier
Got coupons to work during checkout again.
Fixed CMS issues.
Removed unused code, and some tidy
Initial work on reintroducing discount use count.
Get travis tests to work again by using PHPUnit via composer
Added missing abstracted function to CartFixedDiscount  to make test pass
Added missing abstracted function to FreeShipping  to make test pass
Link up order items and orders to discounts that get applied to them.
Don't trim whitespace when setting coupon codes
Renamed code_length config to generated_code_length
Removed unused code
Unlink any existing discounts before linking