windows: don't use atexit for cleaning up the threadpool

If libuv is loaded as a DLL and is later unloaded deadlocks can happen
when running atexit handlers, so we can't use synchronization
priomitives or join threads there.

For reference see https://github.com/saghul/pyuv/issues/171
windows: destroy work queue elements when colsing a loop

Destroy the async handle used to notify about work being done, and the
mutex used to protect each loop's work queue.

Closes #1375