Evil Merge restoration zfs_context.h

The file zfs_context.h seems to be the victimg of an incorrect merge
resolution. Changes from upstream were lost, likely since the local
zfs_context.h file was split into zfs_context_kernel.h and
zfs_context_userland.h. This commit restores some of those lost changes.
The evil merge was fdbc078c0e88e6086fcb312b443be6581c578359.
zed: allow clean exit on OSX (ioctl return ENODEV)
zed: allow startup to wait for kext with -f
zed: allow return to waiting for kext -f
Prevent hang in 'zfs recv' (and possibly 'zfs upgrade' and 'zfs rollback')

Until we can find a proper fix for the deadlock, this provides an ugly
workaround to resolve issue #137.
https://github.com/openzfsonosx/zfs/issues/137

The hack is to delay for a default of two seconds at the beginning
and end of zfs_suspend_fs, but this is adjustable via two new
sysctls:

zfs.vfs_suspend_fs_begin_delay
zfs.vfs_suspend_fs_end_delay
Merge branch 'master' of github.com:openzfsonosx/zfs
.zfs; fix panic iocount < 1"@/SourceCache/xnu/xnu-2422.90.20/bsd/vfs/vfs_subr.c:4108
Enable .zfs by default again.
Add zed event to remove cache file, and appropriate script.
config.remove event added for ZED
HARD LINKS
* vnop_lookup is to keep the name if hardlinks (z_links) are detected
* vnop_getattr is to return the name in va_name when hardlinks are used
Name is currently stored in z_node as static area, could be changed.

* Remove no longer needed z_reclaimed entry, as we sleep in zget rather than
  free in 2 locations.
* Bring back readdirattr, and fix the ".zfs" entry bug
Could be updated to add .zfs into readdirattr for Finder to see it.
Merge pull request #148 from cbreak-black/zfs_context_restore

Evil Merge restoration zfs_context.h
Test different method to wait for reclaim, instead of blind delay
wait for the reclaim to finish. Might wait longer than needed, but also
act as a throttler if reclaim is full.
Darinw allows setattr to modify the crtime (creation time) as well as
atime and mtime.
Stack overflow fix

The flags variable is of type int, when reading from and writing to
it via an uint64_t *, the behavior is undefined but can be really bad.
Merge pull request #150 from cbreak-black/incompatible_pointer

Stack overflow fix
Include root dataset's snapshots on the unmount list.
ZFS ACL overflow fix

Passing a pointer to uid_t (a 32 bit type) to zfs_acl_next_ace, which
writes to it assuming it is a uint64_t pointer has the chance to
overwrite unrelated stack memory, such as access_mask.
Merge pull request #151 from cbreak-black/ptr_type

ZFS ACL overflow fix
vnode_setmultipath needs to be set on hardlinks, and we need to keep the finder
name in positive cache lookups as well.
Attempt to address the release of vp in .zfs
While waiting for zp to die, wake up reclaim thread