Add ZFS support.

Pretend that the output of `zfs list` is appended to the `/etc/fstab` file.
Disregard the 'mounted' dataset property.

If `/etc/mtab` is not a symlink to `/proc/mounts`, and if it contains stale
records, then `zfs list` returns incorrect 'mounted' values that cause
corresponding datasets to be ignored.

The mounted check is unnecessary (and the problem), since mountall checks if
the mountpoints are already mounted before it spawns a mount job - but zfs list
checks mtab before it's been written by mountall (and any stale mountpoints get
misrepresented). Removing that check, everything seems to work fine (mounts
correctly on startup, doesn't overmount things when run from the command line
in a running session).

Amended-by: Darik Horn <dajhorn@vanadac.com>
Closes: dajhorn/pkg-zfs#70
Handle duplicate mountpoints.

When mountall is iterating in try_mounts() on new mount point, change
is_parent() to return false when a record is tested against itself
because a mount point cannot be a root of itself.

Mountall does not preserve the behavior of `mount -a` if more than
one device shares a mountpoint in the /etc/fstab file.  Suppose:

	/var/tmp/alfa   /mnt/charlie  ext2  loop  0  0
	/var/tmp/bravo  /mnt/charlie  ext2  loop  0  0

Both filesystems are mounted on /mnt/charlie by `mount -a`, but
bravo is ignored by `mountall`. This seems to be an artifact of the fix for
LP ##443035 in zfsonlinux/mountall@eca315d06ae4a2913f9b2ec994c68c45fead912f.

Furthermore, mountall hangs if such mounts are ZFS datasets or other
virtual filesystems that are not backed by a real device node.

Closes: zfsonlinux/mountall#5