Refactor stock related service objects to deal with inventory units.

Prior to this change, stock related service objects (coordinator, packer,
prioritizer, package, adjuster) were tightly coupled to orders and line
items, such that they would only create a set of shipments for the set
of line items for an order.

This change makes those objects work with inventory units, which enables
future enhancements that would create shipments for an order that are
not necessarily tied to the initial purchase (e.g. upcoming exchanges
work).
While looking at Package#find_item .. I think this drops a subtle but very useful feature for anyone playing with inventory units line_item x variant references like in product-assembly. See the current implementation of Package#find_item it compares both line item and variant to make sure that it's fetching the proper unit.

The main benefit I see in the current implementation is that is allows us to build custom packages / units overriding less code. If we accept this as is it probably wouldn't even make sense anymore to have both line item and variant columns in InventoryUnit.