fix 'insubshell -p' for ksh93
fix 'insubshell -p' for ksh93

bin/modernish:
- BUGFIX: 'insubshell -p' was broken on AT&T ksh93. The simplistic
  assumption was: "ksh93 does non-background subshells without
  forking a new process, and ${.sh.subshell} only counts
  non-background subshells (resetting to zero on forking a
  background subshell), so if ${.sh.subshell} is greater than 0 we
  know the PID is that of the main shell". This did not take into
  consideration that a non-forked subshell might be part of a
  forked (background) subshell, in which case it erroneously
  returned "$$", the PID of the main shell. Dealing with this case
  required a bit of a redesign, always falling back to the generic
  'launch a shell to ask it for our PID' method if '-p' is given.
- While we're at it, slimline the code for the generic method as
  well.

modernish/modernish