Significant update to ProducerConsumer to reduce CPU usage

Consumer thread only runs when NewData is emitted by producer.  So no forever loop.

Producer thread runs in polling mode, but now has a configurable usSleep based on sample rate and samples per buffer
Update to use new ProducerConsumer model
Update to use new ProducerConsumer model and new DeviceInterface Get/Set era
Bug: workerBuf not initialized.  Crashed when closed before starting any device
New projects for Example device and Softrock device