Evil Merge restoration zfs_context.h

The file zfs_context.h seems to be the victim 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.

This commit only restores part of the changes and was created by hand-picking them.
A more in-depth solution would be to redo the whole merge correctly and then apply
or merge the changes committed since the evil merge.