I initially was doing a larger refactor where the `onInstanceRequestStartExtensionTerminal`
event was removed from the terminalService and instead events would only
be fired in the proxy instance itself, which would be encapsulated better.
However, the task system depends on the global even firing so that the
MainThreadTerminalService can get the terminal for tasks that create
pseudoterminals, so this didn't work out. Kept a more focus refactor
for now.
Note that this adds undefined as an option to TerminalOptions.env which could end up
causing compile errors, but they will be more correct and could reveal a bug in an
extension since some key could return undefined.
Fixes#119046
* get basics working in current dropdown
* filter profiles based on what we want in the dropdown and other info
* add copywright
* terminal.ts -> terminalProfile.ts
* seperate linux distro code
* improve terminalConfig setting description
* add passing tests and fix#79572
* add test for login args
* add wsl stuff
* fix#77652
* lengthen throttle time to 10s
* shell -> process and fire update profiles so dropdown is updated
* consolidate code in terminalProfile
* change profile selection logic
* change profile config structure
* use <ProfileName, IterminalProfileObject> and get wsl distro names to look normal
* provide terminalConfig to terminalProfiles
* move detection/validation to terminalProfiles
* isWorkspaceShellAllowed
* add quickPickOnly so Select Default Profiles returns all and otherwise filters based on config
* Add logs for errors within terminalProfiles
* change return type
* use sync
* fix bug, get custom generated to work
* workspace shell permissions
* add some comments and clean up
* when ext host ready update profiles
* improve terminalProfileObjectEqual check
* don't use windows powershell unless no other powershell