Update ShipmentPacker with a more efficient packing approach

This updates the `ShipmentPacker` to iterate items from heaviest to lightest packing in as many as possible until it has exhausted the pool of items. It does this in batches by item rather than expanding into a large queue to be packed.

This should eliminate the need for #170 since it approximates the number of packages based on an even distribution of the total weight across all the packages, instead of assuming each item occupies its own package.

@odorcicd @csfrancis @jstorimer 

/cc @t2coulth @DavidGeukers 
This seems a bit magical to me :wave: 

Maybe I'm just dumb, but would it be possible to add a comment here just to explain what this is doing?