variations on typed fold for lambda

- The implementations differ a lot in terms of speed.
- They don't have proofs, but essentially soundness will require
  that they are called on well-typed terms.