Allow for lock-free reading zfsdev_state_list.

Restructure the zfsdev_state_list to allow for lock-free reading by
converting to a simple singly-linked list from which items are never
deleted and over which only forward iterations are performed.  It depends
on, among other things, the atomicity of reading the zs_minor integer
and of writing to the zs_next pointer.

This fixes a lock inversion in which the zfsdev_state_lock is used by
both the sync task (txg_sync) and indirectoy by any user program which
uses /dev/zfs due to the zfsdev_release using the same lock but then
blocking on the sync task.

The most typical failure scenerio occurs when the sync task is cleaning
up a user hold while various concurrent "zfs" commands are in progress.

This failure did not occur in Illumos/Solaris because those
implementations use the DDI interface which provides lock-free reading
of device state via the ddi_get_soft_state() function.