Fix zfs_readdir regressions

There are a couple of regressions in zfs_readdir:

1. readdir was modified to use an offset type of loff_t instead of
uint64_t in the initial port of ZFS to Linux. This caused negative ZAP
cursors to be treated as if they were dot directories.

2. A more recent patch to return directory entry
types caused us to return an uninitialized value on dot directories.

We correct these regressions by restructuring the code to use uint64_t
instead of loff_t for the offset, which is similar to what is done in
Illumos and explicitly initializing zap.za_first_integer to DT_DIR when
handling dot directories.

Closes zfsonlinux/zfs#1750

Signed-off-by: Richard Yao <ryao@gentoo.org>