Cleanup deleted files from ProjectFiles list and child_map.
This is a list-level cleanup operation that removes items from a single list. Iterates through items and removes any ProjectFile where file.delete_id > 0. Batches removals to minimize signal emissions. Since GLib.ListModel.items_changed only supports one contiguous range per signal, this emits one broad signal indicating all items from the first deletion position changed.
This should be called after files are flagged as deleted (during cleanup phase).