pg_private::dispatch<const std::vector<unsigned char> >: Add
Add column build_id to table symboldb.elf_file
pg_query: Optimize integer parameters

These parameters are now passed by value instead of by reference.
Disable inlining for pg_private::pg_query, which is no longer
required to avoid by-reference parameters.
database: Switch advisory locking to pg_query
Remove architecture normalization

ELF and RPM architectures are now distinct types in the database.
This better reflects reality, and should not cause any problems
because the two tend to be separate anyway.
Add build_host and build_time columns to symboldb.package
hash_sink: add MD5 support, to_string() and from_string() for hash types
checksum: Switch type member to hash_sink::type
rpm_load: Update FIXME
checksum::set_hexadecimal(): throw on error
Keep track of file digests inside RPMs and verify them during load
Add additional test RPM

This RPM file contains a hardlink: /usr/bin/unzip and /usr/bin/zipinfo
WIP
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