Add 'external' completion style for completions from external tools
This completion style has been in use in Eglot and other third-party
extensions for a long time. It's meant for libraries that interface
with an external tool which provides completions, such as a shell
utility, an inferior process, an http server.
The new file lisp/external-completion.el provides a helper function,
external-completion-table which is given an interfacing function to
the external tool and returns a "programmed completion" table that is
bound to the 'external' completion style. That table can then be used
with completing-read or any other facility expecting a completion
table.
When the 'external' is in use, the usual styles configured by the user
or other in 'completion-styles' are completely overriden. This
relatively minor inconvenience is the price to pay for responsive
completion where the full set of completion candidates doesn't need to
be transfered into Emacs's address space.