with-editor-export-editor: new command

Add new command `with-editor-export-editor' which allows setting
the editor for subsequent commands in `shell-mode', `term-mode'
and `eshell-mode' buffers.

Also add the non-interactive variant `with-editor-export-git-editor',
which is useful when to set GIT_EDITOR using a hook (avoids having to
use a lambda).

Also add utility function `with-editor-read-envvar'.
with-editor{,-async}-shell-command: new commands

Add the new commands `with-editor-async-shell-command' and
`with-editor-shell-command' as replacements for `async-shell-command'
and `shell-command'.

Add the utility function `with-editor-shell-command-read-args' and
advice `shell-command'.
shell-command-with-editor-mode: new mode

This is an alternative to `with-editor{,-async}-shell-command'.  This
mode arranges for the advice to `shell-command' to be always used,
regardless of what command (which ultimately uses that function) is
invoked by the user.  On the other hand this mode always uses $EDITOR,
so the replacement commands still server a purpose.
with-editor.el: update commentary