Fixed a defect in the dynamic programming method

The defect resulted in more than one box of the same size to be added to the stack.  It happened because the cached stacks were not cloned.

I also switched from max_stack.clone() to new ArrayList<Box>(max_stack) to avoid the cast.  That way the explanation of the cast on pages 334-335 can be eliminated.