Expedited exchanges

When a return authorization is saved
Given a return item has a requested exchange
Then an exchange shipment for the exchange items for the return authorization are generated immediately

Given an exchange shipment has been generated pre-return
Given a customer has not returned their item after X days
Then create a new order with the exchange shipment and capture payment for the full amount of the items
Merge branch 'expedited-exchanges' of https://github.com/bonobos/spree
Extract last_incomplete_order to method.

Extracting this logic to its own method allows store maintainers (i.e.
me!) to override this functionality to retreive orders using the logic
that makes sense for their customized version of the store. As an
example, you can override this to return nil to never do order merging,
or place additional restrictions on what the last incomplete spree order
is for a specific user.

Fixes #5177
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
Remove cache on cart page.
Add tiered promotion percent calculator.

Fixes #5138
Cant void payment that failed, and use fake cc data that passes validation.