Move activation of cart promotions into its own method for order contents

Also: remove tests for other pieces of functionality. We don't care that order totals or whatever are updated here. Just that the things that THIS CLASS are responsible for get done in a timely manner.
No longer care of order total is updated when PromotionHandler::Coupon does its thing
Do not use order.contents to skip automatic application of cart promotion

I'm pretty sure we didn't mean for that to be a side-effect
Remove unnecessary check for order.total

Remember: we're testing things that THIS class does, and nothing else
Operate using in-memory Order+Shipment objects in PromotionHandler::Coupon and friends
Remove test at the end of coupon_spec that was testing basically the entire world
Do not call update_column in tax_rate_spec, instead just set the attribute

The attribute no longer needs to be persisted back to the database at all
Skip shipments in FreeShipping PromomtionAction if promotion action has already been applied
Work with in-memory objects in PromotionAction::FreeShipping spec
Remove test for LineItem that was testing taxes

This is tested thoroughly enough within TaxRate and OrderContents tests
Refactor Promotion::Actions::CreateItemAdjustments to work with in-memory objects

This also included a small reshuffle of the logic for product_ids, excluding line items BEFORE create_adjustment gets called, rather than during
WIP: Using IdentityCache to store entire Order object
[api] Remove code in line_items_controller_spec that was testing for side-effects

It is not important that reloading the order object here means that the total is different. All that is important is that the line item is updated correctly. Order total recalculation should be done as a side-effect of that, sure, but it shouldn't be something that we're testing here.
[api] Explicitly call Order#persist_totals after applying a promo code

Necessary because the handler only updates the totals. This is useful for instance if we want to attempt to apply multiple coupon codes to the order at the same time and at the end we can call persist_totals, leading to only one hit to the database. Also, this is necessary because PromotionHandler::Coupon should only be responsible for applying the coupon code promotion, and should not have anything to do with the persistence of the order.
[api] Explicitly save a line item upon creation

Previously, we didn't need to do this because OrderContents did it. Now that OrderContents no longer has this side-effect, we have to save it explicitly.
[api] Explicitly save line item in ShipmentsController

See previous commit for explanation
Unsure of why @shipment.reload needed to be here, given that there doesn't appear to be a test that shows this breaking...
[api] Clean up Api::ShipmentsController tests for removing a variant
No need to reload the item in ItemAdjustments

This is because the item that we have should be the current item
Use I18n.t to avoid error in LineItem#ensure_proper_currency