svc_ioq() and others: simplify thrdpool function entry & responsibilities
	(remove cond_signal wakeup and thread count decrement.)
thrd_wait(): don't sleep when shutting down, handle wake when idle.
thrd_start_routine: decrement thread count here, *only* when really exiting.
also do pool_signal here when exiting.
thrd_shutdown(): wake each idle thread so it can exit, don't broadcast bogus
	pool signal

Signed-off-by: Marcus Watts <mdw@cohortfs.com>
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Complete svc_ioq/thrdpool fix.

If "too much" I/O is running, can run out of threads to create.
Then, work must be deferred until a thread is available to
handle it.  This code implements a queue structure for saving
that work, plus the necessary logic to add and remove work from the queue.

Signed-off-by: Marcus Watts <mdw@cohortfs.com>
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Rendevous transports have a "x_vc_data", and can use it to
determine when a shared transport can't be shared (because it
was marked destroyed).  The x_vc_data wasn't being freed
when the associated duplex record had its refcount go to 0.
This change tracks x_vc_data so it can be freed at the proper time.

Signed-off-by: Marcus Watts <mdw@cohortfs.com>
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Parameterize thrd_max in svc_ioq.c.

Also, __svc_params is already declared extern in svc_internal.h,
remove the extra decl from svc_vc.c.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>