Properly call Product#destroy. Fixes #3659
Improved speed of Shipment#manifest

Grouping by the attributes variant_id and line_item_id showed a 2-3x improvement for big carts on the delivery page.

By grouping by these attributes rather than their association return values, we're not creating N new LineItem and N new Variant objects. We're now only creating 1 of those each per group.
Enforce ordering of shipping rates in Shipment model
Promo total is no longer factored into Order#shipment_total

This is because to calculate the order total, we take the item total (with no promos), the shipment total (with no promos) and then apply the total of the adjustments. Applying the promo_total within the shipment total calculation means that the order total has that adjustment applied effectively twice.
Allow for Promotion::Actions::FreeShipping#label to be overriden
Show original shipping rate + shipment adjustments in checkout summary
Ensure shipment costs are calculated before their promotions

This was an ordering bug, where the shipments promotions were being calculated before a shipment's final cost was set. This was causing Free Shipping promotions to be applied, but they would result in a $0 adjustment.

Switching the order in which these things happen makes it work.

I've also shored up the test for this within the free_shipping_promotions_spec.rb in the frontend.

Fixes #4428
Ensure that set_shipments_cost is called before payment determination

This fixes a very, very old bug where an order can jump from the delivery step to complete, even though a shipment may cause the order price to be non-zero.

Now we have ANOTHER regression test for that, at least.
Shipment#update_amounts now does nothing if there is no selected_shipping_rate

There's no point calling these methods if there is no selected shipping rate AND it would error if you would do that anyway. Therefore a bit of protection around that would be good.
Stub set_shipments_cost where we're actually testing that tax rate is being adjusted

We're not testing that set_shipments_cost is being called within this context, so using should_receive is wrong
Correct total amounts within adjustments_spec

The totals were previously not being calculated correctly. Due to recent fixes, totals are now being calculated correctly, and that broke this spec.
Add missing invalid_credit_card translation
Include fontawesome on the list of assets to be precompiled by the asset pipeline

Fixes #4399
Allow for order_number param to match up order token with requested order

Fixes #4454
Define DestroyWithOrdersError within user_class_extensions

This is needed in Admin::UsersController, but only for custom user classes that didn't previously implement this class

Fixes #4453
fix open transition on adjustments

Fixes #4444
Include localization files for select2 in admin backend

Fixes spree/spree_i18n#362
Show a good error message when stock location creation is attempted without a valid default country existing

Fixes #4272