Introduce new IDTypeInfo structure.
Each ID type should have its own, with some minimal basic common info, and callbacks.
This patch only does it for Object type, for demo/testing purpose. Moving all existing IDs would be a goal of "cleanup Friday".
Note that BKE_idcode features should then be merged back into BKE_idtype - but this will have to be done later, once all ID types have been properly converted to the new system.
One of the things am not sure about in this code is the handling of NULL callbacks, in one case we then use a default generic function from BKE_lib_id (for make_local), in the others we just assume we do not have anything to do... This convenient (less verbose), but maybe we should be more consistent and enforce explicit assignment of BKE_lib_id_make_local_generic to make_local for types that can just use the generic process?
This is part of T73719.