work: grow the number of worker threads dynamically

If a new thread is requested when there is no free one, the work queue
doubles the number of threads in the pool.

The maximum number of threads is passed as an argument of
init_workqueue.  If you pass -1 for it, the number of threads will
grow unlimitedly.

Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
work: shrink the number of worker threads dynamically

If more than half of threads are not used more than 1 second, the work
queue reduces the current number of threads.

Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>