This patch would localize external files when appending assets.
Localizing external files would make a local copy of a Image, Sound, or other
external stored file.
Only files that are not packed would be localized and are relative.
This patch contains only supports Single image files, but contains the machinery
to be easily extended.
# Implementation overview
Before localizing an asset `BKE_external_files_create` is invoked. This function
creates a struct containing the original paths to the external files that needs
to be localized. It uses the newly added `IDTypeInfo.foreach_external_file` callback.
This callback goes over each external file for a given ID.
This patch only implements this for single file image sources (Files + Movies)
After localizing the asset `BKE_external_files_localize` is invoked. This function reuses
the `BKE_packedfiles` logic to copy the files over to the current file.
# TODO
## To be solved before committing.
* [ ] Move specific code from external_files to packedfile.
## To be solved when global implementation is agreed upon.
* [ ] Add support for Image Sequences.
* [ ] Add support for Tiled images.