var/loop optimisation: use process subst/redir where available
var/loop optimisation: use process subst/redir where available

Using a redirection + process substitution (ksh93, zsh,
non-POSIX-mode bash) or a process redirection (yash) to launch the
loop iteration generator has significantly better performance than
the portable method, which must use 'mkfifo' to create a temporary
named pipe to establish the connection between the iteration
generator and the main shell.

It also avoids race conditions with using named pipes on some
systems, particularly Solaris and derivatives, of which all current
versions have a known race condition in the kernel's fifo_open()
function. https://www.illumos.org/issues/10179
This means modernish loops now work reliably under high system load
on Solaris /bin/sh, as that is a ksh93 with process substitution.
Previously, it would occasionally hang when stress-testing these.

lib/modernish/mdl/var/loop.mm:
- Optimise by launching and connecting the loop iteration generator
  using PROCSUBST or PROCREDIR where available.

modernish/modernish