Fixes#79492
Simplifies view state management logic in `mainThreadWebviews` to:
* Not be stateful
* Handle cases where a webview's view state changes through a more complex means (see #79492 for an example of this)
This change attempts to do the following:
- Encapsult most of the logic for handling the webviews used for webview editors into a new WebviewEditorOverlay class
- Greatly simplify WebviewEditorInput and make it take a webview when it is created
- Move the webview creation logic up into the webviewEditorService instead of having it be inside the webviewEditor class itself
This aim of these changes is to make it possible to re-use more of the webview logic for custom editors
We previously used nested states to store some additional metadata alongside the real webview state. This is overly complicated. This change switches us to using a single top level state field, while also adding some code to handle migration from the old state structure