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 
Order of the checks needs to be updated, I'll add a test for it.

I believe the threshold is there for the old implementation, it was building the packages linearly so it would take forever if there were a large quantity of singular items.