Call set_shipments_cost in Order#update_from_params

This method is called in API::CheckoutController and Frontend::CheckoutController, and I have confirmed today that this fixes the bug from #2191

There's now a regression test for it as well. Ideally this bug will never plague us again.
update+persist totals during Order#update_from_params
[frontend] Persist totals after order.contents.update_cart in OrdersController

The updating of the totals is dealt with by update_cart, but the persistence is not (because we don't want to persist it all the time, like in tests) so therefore we will just do it epxlicitly where we care about it being persisted.