Add 'zimport' to aid udev driven pool import (WIP)

This change introduces a new userspace command 'zimport' whose intention
is to be used as a udev helper for dynamically import ZFS pools as
devices appear.

Although this is still a work in progress, the command currently
supports a stateful interface for adding and removing devices:

    # To add the /dev/sda1 device to the /tmp/zimport.cache file
    $ zimport -ad sda1

    # To remove the /dev/sda1 device to the /tmp/zimport.cache file
    $ zimport -rd sda1

Once the zimport cache file contains all of the vdevs for a given pool,
it will automatically attempt to import the pool. For example, to import
a pool consisting of two devices (sda1 and sdb1) run the following:

    $ zimport -ad sda1
    $ zimport -ad sdb1

Work that still needs to be implemented includes the following:

 * A udev rules helper needs to be added to make use of the 'zimport'
   command. This helper should run 'zimport -ad %k' to add a device as
   they appear and 'zimport -rd %k' as they disappear.

 * The cache file needs to be cleared and/or devices removed from the
   cache file as pools are successfully imported.

 * A configuration interface is needed to specify different policies
   which define the conditions which need to be met for a pool to be
   imported. For example, should a raidz2 vdev be imported if one of
   its devices are missing? What if two are missing? This kind of policy
   decision needs to be configurable. Currently _all_ devices must be
   present for the pool to be importable.

Some other items to take into consideration:

 * If the user specifies a raidz2 pool can be imported with a single
   missing disk, when does the import trigger? At the moment all but one
   device is present? Or do we wait a pre-defined amount of time for the
   last disk to appear?

 * A user specified script or executable should also be able to be
   triggered at certain points during the import process.

Signed-off-by: Prakash Surya <surya1@llnl.gov>
Issue #330