Significant rewrite of ProducerConsumer

Replaced subclassed QThread with QT preferred Worker class.
Added thread start/stop sequencing to make sure they start an stop in the same order as the code.
Fixed a bug with acquire() that was causing threads to block occasionally.  Now we tryAquire() and return true/false instead of just waiting forever.
Bug fixing for threads.  Works for USB, still hangs after 1st start/stop for TCP

Problem may be that TCP sockets are best created in the thread and we're creating and using across the main and the worker threads