Fix connection pooling across threads.

This causes the parallel runner to notify the backend when it is finished with the current thread,
which causes the pool to release its thread-local connections to a global pool for other threads
to grab. Users who are using pooled connections from outside the parallel runner should manually
call #done! on their backend once they are finished with their thread.