mllib: Enhance and rename 'detect_compression' function so it can detect a few more file types.
v2v: -i ova: Allow directories and ZIP files to be used as input (RHBZ#1152998).

OVA is not a particularly well-specified format.  The specification
allows a directory to be an OVA, so enable that.  The spec doesn't
mention that ZIP can be used in place of tar, but since we have seen
these in the wild, allow that too.
v2v: Handle *.vmdk.gz compressed files (RHBZ#1152998).

The OVA spec allows the disk images to be gzipped within the OVA
container.
v2v: -i ova: Add a test for ZIP as a container (RHBZ#1152998).
v2v: -i ova: Add a test for *.vmdk.gz compressed files (RHBZ#1152998).
ls: in CSV mode, always have a checksum field (RHBZ#1151900).

Make sure to output the field for checksum even for non-regular files,
as empty, in CSV output mode. This ensures each line has the same number
of fields, regardless of the file type.
cat, diff: avoid double slashes in paths (RHBZ#1151910).

In full_path, skip the trailing slash in the base directory when
different than "/", as the slash will eventually be added when building
the resulting path.
diff: do not pad uid/gid in CSV mode