Add a payload argument to message dialog callbacks (#17660)
Fixes #17658
Summary of the issue:
There is currently no way to pass information between message dialogs and their callbacks. This reduces the functionality available to callbacks in future.
Description of user facing changes
None.
Description of development approach
Add a `Payload` dataclass to `gui.message`. It currently has no fields, though these can be added without breaking the API in future, for example to implement #17646 .
In `MessageDialog._executeCommand`, if a command has a callback, instantiate a `Payload` and pass it to the callback when calling it.
Update the few uses of the message dialog API in NVDA which use callbacks:
* `synthDrivers.sapi4._sapi4DeprecationWarning`
Updated the developer guide to note the new requirements for callback functions.
Testing strategy:
Ran NVDA from source, and triggered the affected dialogs. Ensured they worked as expected.
Ran from source, with `versionInfo.updateVersionType` set to `"snapshot:alpha`, and checked that updating worked.
Built and installed this branch, then ran the CRFT, cancelling and continuing, and ensured that no issues occured.
Known issues with pull request:
None known.