Remove ZFC_IOC_*_MINOR ioctl()s (WIP)

Early versions of ZFS coordinated the creation and destruction
of device minors from userspace.  This was inherently racy and
in late 2009 these ioctl()s were removed and everything was
left up to the kernel.

However, we never picked up these changes in ZoL since we'd
already significantly adjusted this code for Linux.  This patch
aims to rectify that by finally removing ZFC_IOC_*_MINOR and
moving all the functionality down in to the kernel.  This gets
ZoL effectively back in sync with Illumos and FreeBSD.

This change also updates the zvol_*_minors() functions based
on the FreeBSD implemenations.  This was done to avoid a deadlock
which was introduced by the lock restructuring in Illumos 3464.

References:
  illumos-gate/illumos@681d9761e8516a7dc5ab6589e2dfe717777e1123

TODO:
* zvol_set_snapdev() is subject to the same deadlock and must
  be reworked in a similar way to zvol_create_minors().
* __zvol_rename_minor() must be updated to prompt udev.
* Test, test, test.  This code can be subtle are there are quite
  a few cases to get right.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #1862