LazyValue
Holds a value that will be evaluated lazily.
This slightly awkward construction is necessary because we don't want to evaluate options that aren't used and we can't construct an XProcConstantExpression at runtime. Perhaps a better solution would be to resolve the conflict between StepConfiguration and RuntimeStepConfiguration, but we'll do this kludge for now.