This means making a dedicated data generation function for object types that need it,
and a few utility functions for particles and extra driver evaluation (hopefully soon to be deprecated).
Remaining "uber" functions in the depsgraph should be split in a similar manner in future.
The splitting allows us to go deeper into the design of certain object types (meshes in particular)
and improve these without having to deal with all the other types.
Note on mesh vs editmesh operations:
Mesh and editmesh are calculated in separate functions. In order to get to a point
where splitting into individual modifiers makes sense, the first step is to have
two separate operations for these.
Changing edit mode does not rebuild the depsgraph, so we cannot selectively
add only one or the other at build time. Instead both operations are added, but only
one of them is actually executed. Currently this uses an internal test for the edit
mesh, but could later be controlled on the depsgraph level based on active branches.