* variables: allow resolving `extensionDir`
This allows us to fix https://github.com/microsoft/vscode-remote-release/issues/5516#issuecomment-911597917
It enables a new replacement in the format `${extensionDir:<id>}` which
will expand to the filesystem path where the extension is stored. This
involved churn, since now resolution is always synchronous (where before
the terminal took a synchronous-only path.)
Additionally, changes were needed to inject this information in the
variable resolver. As part of this I made the extension host resolver
(used by debug and tasks) its own extension host service.
* fixup! preserve object key order in resolution, add extensionDir support
* fixup! address pr comments
* fixup! address pr comments
* fixup! address pr comments
* config: fix config replacement only working for first variable per line
* fixup! fix unit tests