When using action=undo to undo an edit (or a series of edits), changes to all slots should be undone, not just changes to the main slot.
This means that the logic for undoing edits needs to be extracted from EditPage.
Note that it may be temporarily acceptable to only support undos that do not touch multiple slots, see T194412.
The UX for undo operations across multiple slots needs some design work.
Some considerations:
* Undo for non-textual can not use the generic edit page, and should probably not offer any free form editing ability (Wikidata has undo overwritten to behave like this). Perhaps free form efor models for which ContentHandler::supportsDirectEditing can be dropped from the undo function completelyreturns false.
* When the undo operation spans multiple slots,* Perhaps free form editing can be dropped from the undo function completely. free form editing should be disabled.If we keep it, A diff for each slot should be shown for confirmation thoughwe'll need {T174033}.
* As a baseline, undo operations could just be denied of they w* A diff for each slot should affect any slots other than the main slot.be shown for confirmation
This blocks structured data on commons, since it will be possible to trigger an undo that spans multiple slots, even though individual edits can only affect a single slot.