The main goal of this refactor is to make BPath module use IDTypeInfo,
and move each ID-specific part of the foreach_path looper into their
own IDTypeInfo struct, using a new foreach_path callback.
Additionally, following improvements/cleanups are included:
- Attempt to get better, more consistent namings.
- In particular, move from path_visitor to more standard foreach_path.
- Update and extend documentation.
- API doc was moved to header, according to recent discussions on this topic.
- Remove BKE_bpath_relocate_visitor from API, this is specific callback that belongs in lib_id.c user code.
NOTE: This commit is expected to be 100% non-behavioral-change. This
implies that several potential further changes were only noted as
comments (like using a more generic solution for
lib_id_library_local_paths, addressing inconsistencies like path of
packed libraries always being skipped, regardless of the
BKE_BPATH_FOREACH_PATH_SKIP_PACKED eBPathForeachFlag flag value,
etc.).
NOTE: basic unittests were added to master already in
rBdcc500e5a265093bc9cc.
NOTE: Expected review is mostly on BKE_bpath.h, i.e. on changes to the API of the module, rest of this patch is essentially monkey work (renaming, moving code around, cleanups, etc.).