Re-land "Don't assume backing thread shares protocol ID."
When we're dealing with virtual (memory) threads created by the OS
plugins, there's no guarantee that the real thread and the backing
thread share a protocol ID. Instead, we should iterate over the memory
threads to find the virtual thread that is backed by the current real
Differential revision: https://reviews.llvm.org/D45497
The original revision (r329891) was reverted because the associated
tests ran into a deadlock on the Linux bots. That problem was resolved