Make annotation and fragment actions undoable independently on used annotator
For example, undo for DeleteAnnotationAction
(as implemented in 0a147ef6) works just because after the documents are returned to their previous state, the reindexing process recreates all deannotated (and deleted from the registry) code fragments.