Implements a bin packing algorithm similar to worst-fit decreasing bin packing. Given a input list of
WorkUnits,
a
WorkUnitWeighter function, and a maximum weight per
MultiWorkUnit, packs the input work units into
MultiWorkUnits.
The algorithm is as follows:
* Sort work units decreasing by weight.
* Compute the minimum number of MultiWorkUnits needed, and create them.
* For each work unit, find the MultiWorkUnit with the largest space available, if it fits, add it there,
otherwise, create a new MultiWorkUnit and add the work unit there.