Clear threadpool service on service destruction.

This keeps the service available while the threads complete
(because they copy the reference pointer)
but blocks new loop-invocations on the threadpool
from performing work for the client.

Since the lifetime of the worker threads is limited to the lifetime of
the threadpool, the service is available while the worker threads use
the threadpool_service object.

I.e.:  lifetime(threadpool_service) <= lifetime(threadpool workers) <= lifetime(threadpool impl).