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