Merged work on constraints branch

* commit 'fc1505624194b7d676796d4076cb1c1ed855f49f': (22 commits)
  Display which orders have been used for a given discount
  Limit uses now includes orders where payment has been started less than 10 minutes ago). 10 minute default is adjustable
  Unlink any existing discounts before linking
  Removed unused code
  Don't trim whitespace when setting coupon codes Renamed code_length config to generated_code_length
  Link up order items and orders to discounts that get applied to them.
  Added missing abstracted function to FreeShipping  to make test pass
  Added missing abstracted function to CartFixedDiscount  to make test pass
  Get travis tests to work again by using PHPUnit via composer
  Initial work on reintroducing discount use count.
  Removed unused code, and some tidy
  Got coupons to work during checkout again. Fixed CMS issues.
  Fixed many order coupon tests. Introduced shipping discount. Removed OrderCouponModifier...in favour of just using OrderDiscountModifier
  Added actions classes Allow discounts to require that all selected product be present
  WIP: improving constraints system, and the way discounts are worked out Plenty of testing, but some are failing
  Fixed some broken constraints and logging messages.
  Split discount constraints out, fixed some issues with them, and included them as DataExtensions
  Initial work on constraints system
  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.
  Converted CouponsModelAdmin into a more generic DiscountModelAdmin.
  ...