Don't require queue used in NewThreadWorker to implement iterator()
Switch NewThreadWorker to use unsafe backed MPSC queue if available

- Add a blocking MPSC queue implementation, including unit tests for blocking Queues

- Add minimal unit test for Queue implementations