some support for inference of "inline" folds

- added let-bindings (ELet)
- in cases where pointers to the locations that need folding are
  not all arguments (e.g. the return expression, or one of the arguments
  at a call), then the pointers are sought from the environment and
  inserted inline using let-bindings