Prevent multiple promotions on the same adjustable

The desired behavior when applying multiple promotions to one order is for Spree to choose the one that gives the largest discount, but disable all others. This makes sure that customers cannot combine multiple discounts.

However, before this change, this was only enforced for promotions of the same type. I.e. you could only use one line-item-level promo per order, and one order-level promo per order. But you could combine a line-item-level promo with an order-level promo and they would both be applied at the same time, combining the discounts. We fix that by comparing order-level adjustments with the sum of all line-item adjustments per promotion. Then, we pick the best promotion and disable all others.

You could also end up with multiple promos per order by changing an order that already had multiple promos applied to it. This happened because changing the order (for example, by adding line items) rechecked the eligibility of promotions, potentially making multiple ones eligible, but forgot to re-choose the one best promotion. We fix that by calling the logic that chooses the best promotion any time the ```OrderUpdater``` recalculates adjustments.

cc/ @huoxito -- I think you are familiar with this code.
cc/ @gmacdougall, @cbrunsdon, as we discussed on IRC
cc/ @athal7 who paired with me on this.

I believe this fixes #4675
@huoxito Yeah, thanks for following up here. You are right that this wasn't quite right yet. I've cherry-picked over a spec from @cpatil in 1765bc2 that tests a case that was failing with my previous change. And I've added new logic in be2da07 that keeps all the tests green, along with (hopefully) a better explanation of what is going on. Can you take another look?