this adds a "standard" api for ui scripts and thumbnailers to communicate with each other, based on the simple thumbfast api [0]. the api works as follows: * To issue a thumbnail draw command, the UI script will set the property `user-data/osc/draw-preview`. * To clear the thumbnail, the UI script will set the previously mentioned property to `nil`. a more ideal api would make it so that the thumbnailer script only generates the thumbnail and doesn't need to draw at all. but such api is vastly more complex [4] and would require a lot more work and maintenance on mpv's side. this is a decent enough api that allows arbitrary thumbnailers and ui scripts to communicate between each other and work together, while being simple enough that it can be supported without too much maintenance. this change has been tested with work with thumbfast [1]. and for demonstration that this api can be useful outside of osc, it has also been tested to work on mfpbar's thumbnailer branch [2]. the code to determine thumbnail x,y is based on the osc fork inside of thumbfast [3]. [0]: https://github.com/po5/thumbfast?tab=readme-ov-file#for-ui-developers-how-to-add-thumbfast-support-to-your-script [1]: https://github.com/po5/thumbfast/pull/173 [2]: https://codeberg.org/NRK/mpv-toolbox/src/branch/thumbnailer/mfpbar [3]: https://github.com/po5/thumbfast/tree/vanilla-osc [4]: https://github.com/mpv-player/mpv/discussions/17654