Add `recEntries` and a companion leaf iterator `dirEntries` to provide an alternative to stdlib `os.walkRec` that is safer about not infinite looping in the presence of symbolic link loops.  This also takes a `maxDepth` parameter which even end users may find convenient, and can optionally return any file metadata as requested by iterator invoker.  These new iterators work like the new `statOk` (but have more params) in that way.
Add `recEntries` and a companion leaf iterator `dirEntries` to provide an
alternative to stdlib `os.walkRec` that is safer about not infinite looping
in the presence of symbolic link loops.  This also takes a `maxDepth`
parameter which even end users may find convenient, and can optionally
return any file metadata as requested by iterator invoker.  These new
iterators work like the new `statOk` (but have more params) in that way.

Implementation-wise, both `//` and the state machine are simplified from the
current `os.walkRec`.  `recEntries` need not know 4-way `enum PathComponent`
values, but rather only if the leaf yielded entry can or cannot be recursed
into - just a `bool` which here we call `canRec`.  Logic to decide `canRec`
does change depending on `follow`, but it seems to me like overall simpler
system logic to just pass `follow` to `dirEntries` and means that users need
not know anything about that state machine other than `follow` or not which
to me seems much simpler.  Additionally, we even bubble up dt[] and avoid
any unnecessary system calls making this API minimally wasteful (I hope!).

c-blake/cligen