Fix bug in Thread::run() that caused unexpected copy construction of functors

This caused issues for the Thread::Queue, creating too many readers for
the queue and causing the program to hang at the end of processing.