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 odd. If I have one really heavy item (one item that puts me over the maximum weight), I'll get an error saying that I have more than 10,000 packages. Need to update the error msg?