Allow copying files in the workspace on markdown drop / paste
Fixes#157043
Also:
- Renames the markdown paste settings and makes them no longer experimental
- Makes the copyFiles setting no longer experimental
- Adds a `markdown.copyFiles.overwriteBehavior` which lets you control if/how existing files are overwritten
* Add widget to change how content is pasted
For #30066
This adds a widget that lets you change how content is pasted if there are multiple ways it could be pasted
To do this, I've made the post drop widget generic and reused it for pasting too
* Update types
* More code deduplication
* Allow passing in a `DataTransferItem` to workspace edit
Fixes#175800
Allows you to pass a file `DataTransferItem` to `WorkspaceEdit.createFile`. This lets us avoid transferring the data back and forth to the extension host, and also avoid having to base64 encode and decode it, significantly improving performance for large files
* Take data transfer file instead of data transfer item
For #179430
Adds two new UX components:
- An inline progress icon shown when a drop operation takes over 500ms. This replaces the notification. You can click on it to cancel the drop
- Post drop, a drop feedback icon that lets you drop the file in a different way. This lets you drop the file as plain text for instance instead of as a markdown link
* Revert "Revert "Add experimental setting to define where files should be copied for markdown (#169454)" (#169615)"
This reverts commit b2121c2dbe.
* Fix tests
These paths should always use `/`