Use actual ELF closure computation for --show-soname-conflicts
update_elf_closure(): Restrict to ET_DYN objects
database::print_elf_soname_conflicts(): Reordering only
database::print_elf_soname_conflicts(): Cache file IDs
update_elf_closure(): Determinism for file conflicts

When file paths for a soname are the same, the priorities are
identical, and we use the package name as a tie breaker.
update_elf_closure::lookup(): Reindent
update_elf_closure(): Suppress some common soname conflicts
update_elf_closure(): Apply delta to symboldb.elf_closure

Previously, we were rebuilding the relevant part of the table from
scratch, causing a lot of index updates and WAL traffic.