Add NVList class, also convert zfs_snapshot to use it for props