with-editor-locate-emacsclient: deal with nil invocation-directory

See magit/magit#1443.
with-editor-locate-emacsclient: cosmetics

Instead of `when-let' use `let' because the value always is non-nil.
advice(start-file-process): cosmetics
use built-in internal-default-process-filter, if available

Emacs has `internal-default-process-filter' since version 24.4; use it
if it's fbound.  Otherwise define a lisp implementation.  Previously our
function was named `with-editor-standard-process-filter', now we call it
`internal-default-process-filter' too.
with-editor-process-filter: set with-editor--envvar in correct buffer

Make sure that `with-editor-process-filter' sets the buffer-local value
of `with-editor--envvar' in the buffer being visited.  Previously we
relied on the function specified by `server-window' to keep that buffer
current, but while it is unlikely that it doesn't do so, there is no
guarantee.
with-editor-process-filter: expand relative file name

The child process might call the $EDITOR with a relative file name,
so we have to remember the working directory when the process is
created and then, if we get a relative file name, expand it in
`with-editor-process-filter'.

The easiest way to pass the `default-directory' from our advice to
`start-file-process' to `with-editor-process-filter', is to store it
in the process object.
Advice `shell-command'
Add list of $EDITOR handled by async-shell-command