improve debug messages
Make params not be numerically indexed specially

This was breaking closures that referred to outer
functions' parameters.  'Y' isn't fixed yet but
it has a different error, and 'factorial' still
works.
Use varnames for letrec-defined vars.

This makes references to these values by name
easier to read.
another test that passes