daemon: Change ln, ln-f (hard-link) APIs to use link(2) instead of external ln (RHBZ#895905).

The reasons to do this are twofold:

(a) It's probably a tiny bit faster.

(b) It lets us capture the real errno if the link(2) syscall fails.

The errno is also passed through guestmount, fixing RHBZ#895905:

+ guestmount -a test1.img -m /dev/sda1:/ -m /dev/sda2:/boot /tmp/mnt
+ touch /tmp/mnt/foo
+ cd /tmp/mnt
+ ln foo boot/foo
ln: failed to create hard link ‘boot/foo’ => ‘foo’: Invalid cross-device link

(cherry picked from commit 533082e28240522df51e6615d99794d726c8e1f0)
(cherry picked from commit 8e8978cb48288bbe1fa90ad8812551d7812b6a40)
fuse: If guestfs_last_errno returns 0, don't return no error to FUSE layer.

guestfs_last_errno (g) == 0 doesn't mean "no error".  It means the
errno was not captured.  In this case we have to substitute some sort
of errno, so choose EINVAL arbitrarily.
(cherry picked from commit 28e34290ff0dc11e9c5d8b8a1e5992cd0cc941fb)
(cherry picked from commit eda7274512461dc2ad9ba234d0c34909d0eeb73e)
proto: Fix stack overflow when there are many progress events (RHBZ#909624).

Thanks: Eric Blake.
(cherry picked from commit b3cf5d1d9638313a656ee61f1bd5f06bbca21abf)
(cherry picked from commit d91a048c58f2a98ee210c1a121006a3c36579468)
python: Let RHashtable be returned as a Python dict.

The initial proposal was suggested by Matt Booth and discussed on the
mailing list here:

https://www.redhat.com/archives/libguestfs/2013-April/msg00007.html

(cherry picked from commit ba0199c487feec7f02cfc00ba3e900e6fa5ed4d8)
(cherry picked from commit 70e550c775eb5312ddd095146235bb7ac92cc4a0)
daemon: file: Remove extraneous space after output of 'file' command (RHBZ#928995).
(cherry picked from commit d6ea2f5911a6c7f3037ae822e872b810ad80ba51)
(cherry picked from commit ffefe26ec5b6ab676312203b070b9b46ad95973d)
valgrind suppressions: Suppress libmagic leaks.
(cherry picked from commit f1a73f3281c65905cd04758f994154dca6dccc0e)
Version 1.16.35.