database: Do not include mtime in row hash for symboldb.file_contents

This change does not affect correctness, but without it, we cannot reap
the benefits from moving the mtime column to the symboldb.file table
because we still keep file_contents entries with different mtime apart.
database: Include file mode in the row hash for symboldb.file_contents

This is a bug fix that actually affects correctness of database contents.
cxxll::rpm_parser_state: Improve hardlink handling

We now perform the hardlink grouping inside rpm_parser_state and
no longer depend on the last file in the CPIO archive in each
hardlink group carrying the actual data.
cxxll::rpm_parser_state: Improve handling of zero-length hardlinks

We now treat them as regular files instead of hardlinks.
cxxll::rpm_parser_state: Ghost files should have inode number zero
cxxll::rpm_parser_state::read_file(): Handle hardlinked ghosts with data
cxxll::rpm_parser_state: Perform ghost adjustments

The adjustments are longer required in rpm_load().
cxxll::rpm_parser_state: Adjust internal type

This avoids warnings in future changes.
rpm_load (add_files): Minor reordering to reflect variable assignment
cxxll::rpm_parser_state::read_file(): More ghost file handling

Ghost files can have contents if they are hardlinked to each other.