In 'zfs send' when sending multiple snapshots in one go and when
verbose is enabled (-V or -v), libzfs would spawn a watcher thread
which periodically pokes the kernel for update.

The watcher thread itself sleep()'s inside to implement the wait
interval.  The current sleep(2) implementation on FreeBSD does not
immediately return when pthread_cancel() is called, which is what
the main thread used to notify that the watcher should quit.

Looking at the code, when a 'zfs send' is completed,
ZFS_IOC_SEND_PROGRESS would bail out with ENOENT so it does not
make much sense to do pthread_cancel and pthread_join is sufficient.

Instead of doing a blind sleep(), we now use pthread_cond_timedwait()
and signals the watcher thread to quit when we know it's ready.

While I'm there, also make 'zfs send -v' only print out the table
header when there is something to show.  This fixes the issue when
sending very small snapshots where one will see:

TIME        SENT   SNAPSHOT
TIME        SENT   SNAPSHOT
TIME        SENT   SNAPSHOT
TIME        SENT   SNAPSHOT
TIME        SENT   SNAPSHOT

But no actual data.  The new code now prevents this from happening
at expense of making the table header showing about 1 second later.

Ticket: #4610