Refactor OrderIventory

An instance now holds a variant, line_item and order reader attr. It
makes the method signatures inside the class simpler. Plus an order
inventory instance job is figure whether or not inventory should be
created or destroyed based on the line item quantity

Part of #3991
Add migration to associate line items and iu directly

Part of #3991
Update Shipment `set_up_inventory` to work with line_items

Part of #3991
Package `add` receives a line item as first argument

Part of #3991

So that it can set the line item when creating inventory units. Variant
would still be fetched from the line item
Set completed_at after line items are created in order_factory

Part of #3991

As it represents a more real use case. Having a empty completed order
would cause inventory issues when addin line items. e.g. It would try to
create inventory units for line items not yet persisted on the database
(read activerecord callback hell)
Fix specs related to package api changes

Part of #3991

Had to modify the order factory which caused a bunch of other specs to
fail. Hopefully now it has a more reasonable approach which is first
create line items list then shipments and then update! itself.
Remove Stock::RemainingPacker (not referenced anywhere)

Part of #3991

Had some broken specs there and decided to remove it rather then fix the
specs. It's not used anywhere and it's not clear why it exists so we
might be better off without it
Verify inventory after line_item is saved

Part of #3991

We need the line item id when creating inventory units.