(PUP-2240) Refactor unfold behavior into common method
A private evaluator method called unfold is added to handle
the case of iterating and evaluating an array of expressions where
an UnfoldExpressionExpressions should be unfolded/expanded in-line.
This new method is then used in the places where unfold behavior
is supported.