fsu_ecp: Improve error reporting in copy_file()

In copy_file() after opening fdfrom and fdto the code incorrectly checks
rv for an error return when it should be checking fdfrom and fdto.

Further, when reporting errors with warn() in the same function, add
text to identify the actuall system call that failed.
fsu_ecp: Fix opening of fdto in copy_file()

When copying (for example) a directory recursively fsu_ecp fails:

$ ls -la /tmp/dir/
total 0K
drwxr-xr-x 2 mato users  80 Oct  9 11:51 .
drwxrwxrwt 9 root root  280 Oct  9 11:56 ..
-rw-r--r-- 1 mato users   0 Oct  9 11:51 file1
-rw-r--r-- 1 mato users   0 Oct  9 11:51 file2
$ ./fsu_ecp /tmp/fstest.udf -pR /tmp/dir .
lt-fsu_ecp: write ./dir/file2: Bad file descriptor
lt-fsu_ecp: write ./dir/file1: Bad file descriptor

This is due to incorrect calls to open() and rump_sys_open() when
opening fdto in copy_file().

This commit fixes the calls to pass the correct mode bits:                        from_stat.st_mode & (~S_IFMT));
and correct flags to open:
  O_WRONLY|O_CREAT

We also remove O_EXCL from the FSU_ECP_GET case for consistency.
Cosmetic change: Open fdfrom first, then fdto in copy_file()

Always call open in the same order (fdfrom first, then fdto) for
consistency (and makes it easier to spot mistakes).
fsu_ecp: Set umask (0)

Set umask (0) before starting any copy operations to correctly preserve
permissions on copied files.
Improve error reporting in fsu_mount()

Currently when fsu_mount() fails for some reason no feedback is provided
to the user:

    $ ./fsu_ls /tmp/nonexistent.udf
    usage: lt-fsu_ls [-o mnt_args] [-s specopts] [-t fstype] [-f] fsdevice [-AaBbCcdFfghikLlmnopqRrSsTtuWwx1] [file ...]

This commit improves the error reporting to be more helpful:

    $ ./fsu_ls /tmp/nonexistent.udf
    lt-fsu_ls: /tmp/nonexistent.udf: No such file or directory
    usage: lt-fsu_ls [-o mnt_args] [-s specopts] [-t fstype] [-f] fsdevice [-AaBbCcdFfghikLlmnopqRrSsTtuWwx1] [file ...]
    $ ./fsu_ls /tmp/bogus
    efs: invalid superblock: sb_magic invalid
    lt-fsu_ls: /tmp/bogus: Invalid or unknown filesystem type, retry with -v for details
    usage: lt-fsu_ls [-o mnt_args] [-s specopts] [-t fstype] [-f] fsdevice [-AaBbCcdFfghikLlmnopqRrSsTtuWwx1] [file ...]
    $ ./fsu_ls /dev/zero
    lt-fsu_ls: /dev/zero: Not a regular file or block device
    usage: lt-fsu_ls [-o mnt_args] [-s specopts] [-t fstype] [-f] fsdevice [-AaBbCcdFfghikLlmnopqRrSsTtuWwx1] [file ...]
Merge pull request #15 from mato/wip-fsu-ecp

Fix "Bad file descriptor" and file mode bits in fsu_ecp
fsu_mount(): Fix rump_pub_etfs_register() error handling

The rump_pub_*() functions return 0 on success and a NetBSD errno on
failure. Handle this correctly.
Merge pull request #16 from mato/wip-fsu-mount

Improve error reporting in fsu_mount()