Add backend code for processing and storing image recommendation user feedback submitted via the VisualEditor API's plugin mechanism.
- Create an image recommendation submission handler service, similar to the AddLinkSubmissionHandler and LinkSubmissionRecorder classes (there probably wasn't much point in those two being separate classes), maybe with a shared SubmissionHandler interface. (See also T289217: Add Image: Handle differences in invalidation logic.)
- Declare the new Special:Log event subtype to use for recording image recommendations. The i18n messages should be placeholders for now.
- Add some mechanism to the VisualEditorApiVisualEditorEditPostSave hook handler to select the appropriate submission handler based on the plugin data.
- Invalidate items in the search index when suggestions are accepted or rejected
(Similar Add Link tasks: T266446, T269657)
This is pending further discussion and might not be needed:
- Create a growthexperiments_image_submission table, similar to the existing growthexperiments_link_submission table, but with the appropriate data fields instead of offset/length/target/feedback, and a DAO class for interacting with the table.