[threadpool] Let the runtime abort and wait for threads on shutdown (#4348)
* [threadpool] Let the runtime abort and wait for threads on shutdown
We would previously have the threadpool abort and wait for its threads during runtime shutdown, but it would tend to be buggy or leaky. The runtime already takes care of aborting and waiting all the other threads, so we simply also let it take care of the threadpool threads.
* [threadpool] Wake up all parked threads on shutdown
This fixes a hang at shutdown, where one or more threadpool threads might not be unparked and only exit after the timeout, delaying runtime shutdown.