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