Test to see if a better coupon exists already

If we don't find the valid promo in all our places it could be
successfully applied, but it *is* still on the order, it was accepted by
the order but a better one was used instead

Fixes #5139
Fix Spree::Promotion not applying all of the time.

There was a specific case in which promotions added to an order would
not apply to new items added to the cart. This corrects that by having
the PromotionHandler activate all promotions already associated with the
order as well as any with a blank code and path.

Closes #5072

Conflicts:
	core/spec/models/spree/promotion_spec.rb
Revert "Fix Spree::Promotion not applying all of the time."

This reverts commit e61236f0b422293fe3e3f3cf066f91435a3b6a8c.
Fix Spree::Promotion not applying all of the time.

There was a specific case in which promotions added to an order would
not apply to new items added to the cart. This corrects that by having
the PromotionHandler activate all promotions already associated with the
order as well as any with a blank code and path.

Closes #5072

Conflicts:
	core/spec/models/spree/promotion_spec.rb
Remove cache on cart page.
Use rspec-retry to get past random phantomjs failures (turn off by default)

Closes #5178
Merge branch '2-2-stable' into 2-2-nemo-stable
Merge branch '2-2-nemo-stable' of github.com:godaddy/spree into 2-2-nemo-stable