fix letrec with self-recursive functions

Builtins are working but something else is broken;
I'm looping.
change main testing
fix factorial!

(tailcalled builtin functions were buggily
returning to the wrong place: fixed!)