This is iSCSI sharing for ZoL (shareiscsi).
* Support retrieving active iSCSI sessions:
  + Move nfs.c:foreach_nfs_shareopt() to libshare.c:foreach_shareopt()
    so that it can be (re)used in smb.c and iscsi.c.
  + Add support for options to 'shareiscsi'.
    + name/iqn	Full iSCSI Qualified Name (IQN), including identifier
		Default: Generated by iscsi_generate_target()
			 => iqn.YYYY-MM.tld.domain:dataset
    + lun	LUN (0-16384)
		Default: 0
    + type	Share mode (fileio, blockio, nullio, disk, tape)
		Default: blockio
    + iomode	IO mode (wb, wt, ro)
		Default: wt
    + blocksize	Logical block size (512, 1024, 2048, 4096)
		Default: Volume blocksize, 4096 if not usable.
  + If not called with a name= value, then force setting it.
    This so that the IQN doesn't change every month (when
    it is regenerated again).
* Support for SCST iSCSI implementation.
* Retrive active iSCSI sessions
* Enum values for iscsi_implementation.
* Try to improve performance
  + We check for iSCSI availability in the init function only
    Limits the number of times we do this - it takes time...
  + Use stat() instead of opendir()/closedir().
  + Since iscsi_targets is global, we only retreive targets if it's NULL
    in iscsi_retrieve_targets(). It should limit the number of times we
    fork() and read targets AND sessions.
* Use ZVOL_DIR (/dev) and ZVOL_DRIVER (zvol) instead of hardcoded '/dev/zvol'.
* Run cstyle.pl to fix any code style problems.
* Minor comment changes.
* Use 'dataset' instead of 'path' in call to iscsi_generate_target().
* Remove assert() from iscsi_generate_target(). They are empty in call and set during the function.
* In iscsi_disable_share_all(), check the return value from iscsi_disable_share_one().
* Remove iscsi_retrieve_targets() call in iscsi_is_share_active(). Unnessesary.