* Fix the case where the
  `callf /tee-stdin 0.log /pipe-stdin-to-child-stdin "" "cmd.exe /k"`
  expression has broken/altered autocompletion feature in the `cmd.exe` process
  and the `cmd.exe` treats all the tab characters as is.

  The issue is attached to the stdin handle type inside the `cmd.exe` process.
  If the stdin handle has not a character device type
  (GetFileType(GetStdHandle(STD_INPUT_HANDLE)) != FILE_TYPE_CHAR), then the
  autocompletion feature is turned off and all characters including a tab
  character processes as is. Otherwise the tab button press triggers
  the autocompletion feature.

  The stdin handle changes its type from the `FILE_TYPE_CHAR`, for example, if
  the process input is redirected.

  The fix can be made portably between different Windows versions, for example,
  through the code injection into a child process and interception of the
  `ReadConsole`/`WriteConsole` calls.

* Hookup WriteFile on the stdout/stderr in a child process to force file buffer
  flush on each write. Can fix a progress stall based on stdout/stderr
  buffering.

* Hookup SEH exception filter in a child process to intercept SEH exception
  being throwed out of a child process to be able to pause-on-error in the
  parent `callf.exe` process even if a child process didn't return non zero
  return code.

* Get injected into parent process being used for console window attachment and
  directly call `GetStdHandle` functions to read standard handle addresses
  layout to update the standard handles (call `StdStdHandle`) in the process,
  where console is attached.

* In `callfg` by default create/attach the console on demand if not yet
  attached or created, for example, in case of print into console because of an
  error. Add a flag to suppress such behaviour.
  In `callf` by default show if hidden or create if detached/not attached the
  console on demand the same way as for the `callfg`.

* Fix `start "" /WAIT callfg.exe /attach-parent-console "" "unexisted.exe"`
  invalid print in non 65001 code page.

* Fix `callf.exe /detach-console "" "unexisted.exe"` crash.

* Implement `/disable-parent-ctrl-signals` and `/disable-parent-ctrl-c-signal`
  through a parent process injection to avoid a parent process to close when it
  can not avoid it by itself.
  For example `mintty` process in Windows does close itself on ctrl-c press and
  terminates the child process too when the child process can run in
  interactive mode and should not close upon the ctrl-c press:
  `mintty.exe -e cmd.exe /k`

* Implement process injection related to the partially implemented
  `/use-stdin-as-piped-from-conin` flag.

* Fix `callf.exe` long paths open.

* Optionally disable `\{` escape sequence expansion for the positional
  arguments in case of the `/no-subst-pos-vars` flag.

* Add `/v-* <name> <value>` options to use additionally in the
  `/elevate{ ... }` option to be able to expand and to substitute variables in
  the `<value>`:

  `/v-E`, `/v-EE`, `/v-S`, `/v-SE`, `/v-S-E`, `/v-SE-E`, `/v-S-EE`, `/v-SE-EE`

  Use `\` escape sequence as in the generic command line expansion.

* Add ability for variables late expansion in case of process elevation to
  expand after the elevation instead of before:

  >
  callf /elevate{ }{ /E1 } "" "cmd.exe /k echo.$\{MY_ELEVATED_VAR}"

  In case of variables which can not pass the elevation barrier or does reset,
  for example, - `COMSPEC`, do implement environment variables substitution
  with the new option - `/v-* <name> <value>`:

  >
  callf /elevate{ /v-E COMSPECLNK "${COMSPEC}" } "$\{COMSPECLNK}" "/k"

  NOTE:
    Beause elevation does execute through the `ShellExecuteEx` Win32 API which
    does not support explicit environment variables setup, then we use the
    parent process shared memory to setup the environment variables.

* Improve rearranged output between stdout and stderr while being redirected,
  by saving stdout and stderr read/write times as a key to resort the output.

* Add
  `/set-lang-ids <id1-hex>[,<id2-hex>[,...]]` and
  `/set-lang-names <name1>[,<name2>[,...]]` to call
  `SetProcessPreferredUILanguages` to set preferred UI languages.

  For en-US and en:

  >
  callf /set-lang-ids 0409,0009 "" "..."

  >
  callf /set-lang-names en-US,en "" "..."

* Add
  `/runas-user <user>`
  to run under different user with system password input dialog.

* Add ability to run specifically as System Local account:
  `/runas-local-system`

  Example: https://github.com/zodiacon/sysrun/blob/master/sysrun.cpp

* Add 64-bit version of callf:

  - callf64.exe
  - callfg64.exe

  Add `/runas-parent-bitness` to automatically choose 32-bit or 64-bit version
  based on parent process bitness. If bitness is the same then, just ignore it.

  If elevation is enabled, then run a different bitness callf executable before
  the elevation.

  Add batch scripts to automatically select 32-bit or 64-bit version of
  callf executable:

  - callf.bat
  - callfg.bat

  Add for all executables `/disable-wow64-fs-redir-if-this-proc-x86` to
  additionally disable WOW64 file system redirection in case of 32-bit
  this-process.

* Add `/allow-subst-pos-vars-after-env-var-expand` and disable by default
  positional variables substitution after environment variables expansion.
