Keep track of file digests inside RPMs and verify them during load
WIP
WIP
Merge branch 'master' into serial-cleanup
Adjust examples
Merge branch 'master' into hardlinks
Merge branch 'serial-cleanup' into hardlinks

Conflicts:
	schema.sql
Load file contents into symboldb.file_contents
Update examples
database::package_by_digest(): Fix
database::intern_file_contents(): Remove advisory locking

We cannot use it because large numbers of locks take a lot of shared
memory in PostgreSQL.  Instead, we need to add a unique column with a
hash of the entire row, so that we can detect concurrent inserts of
the same row.  (The current version is no longer safe for parallel
loading.)
database::intern_file_contents(): Use const references for parameters
database: Use column symboldb.file_contents.row_hash for deduplication

This is still racy and can lead to transaction aborts, but it avoids
spurious duplicates during concurrent loading.
symboldb: Remove unnecessary context for error message
Merge branch 'master' into hardlinks
Merge branch 'hardlinks' into file-digest-verify

Conflicts:
	lib/symboldb/rpm_load.cpp
database::add_file(): Remove unused length variable
Merge branch 'hardlinks' into file-digest-verify

Conflicts:
	lib/symboldb/database.cpp
database::add_file(): Update interface
Merge branch 'hardlinks' into file-digest-verify