Re-choose best available promotion when an order changes

Before this change, we could end up with multiple eligible promotions on
the same order. This happened because changing the order (for example,
by adding line items) rechecked the eligibility of promotions,
potentially making multiple ones eligible, but forgot to re-choose the
one best promotion.

This change adds a call to the logic that chooses the best promotion any
time the ```OrderUpdater``` recalculates adjustments.

Adds test to ensure we do not apply multiple line item promotions

Spec and style improvements

Runs two specs twice with different ordering to ensure the order in
which promos are applied doesn't matter. Also cleans up some style
issues and removes an unnecessary stub.

Add specs for taxable items + promos

Correctly limit a promotion to its maximum amount

You should never be able to reduce the price of an adjustable to less
than zero. Thus, we have to guard against a promo applying a discount
larger than the pre-promo amount.

However, as we also do recalculations, we cannot just use the
post-adjustment amount as a limit here. We have to use the
pre-adjustment amount -- i.e. pre-tax, pre-promotions. That is correct
because a) tax gets calculated on the post-promotion amount and b) there
can only be one active promo per line item.

fix for line_item amount instead of price with associated spec

Conflicts:
	core/spec/models/spree/promotion_handler/coupon_spec.rb

CreateItemAdjustments handles only LineItems

Fixes #4675
Fixes #4775
Fixes #4799
Payments with a cvv_response_message are not necessarily risky.
Remove spec that is no longer true.
Make sure line_item is assigned in specs

As of dcbd5de we expect line_items to always be associated with an
inventory_unit. Ensure we are assigning that in specs.
Importer::Order should connect Invntory to Items

The Spree::Core::Importer::Order allows importing inventory units via
the API.

Since InventoryUnits should now be associated with LineItems, this ties
the unit to the first line_item matching the imported variant.
Remove order association from inventory_units

There is no need to store the order_id on an inventory_unit, as they are
tied to both a line_item in an order and a shipment in an order.
Instead, we can delegate order to the shipment.

This should hopefully allow some future simplification as they are more
normalized.
Base Shipment#to_package off of Shipment#manifest

This avoids duplication and is correct in the case that the variant
being shipped is not the same as that of the line_item.
optimized Shipment#manifest
add quantity to inventory_units

For now always setting to 1
fix availability validator to consider quantity
Fix Shipment#manifest to consider quantity
simplify OrderInventory
Add inventory_unit#remove and fix OrderInventory
Update shipments.js to understand quantities
fill_backorders
set_up_inventory takes a quantity
Spree::Package#to_shipment should use quantity
Refactor IU#fill_backorders unto IU#split