use ring buffer in work queue

Link: https://github.com/GeneAssembly/biosal/issues/295
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
remove volatile keywords

Link: https://github.com/GeneAssembly/biosal/issues/296
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
use ring buffer in message queue

Link: https://github.com/GeneAssembly/biosal/issues/294
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
don't lock inside ring queue

Link: https://github.com/GeneAssembly/biosal/issues/298
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
fix memory leak in ring queue

Link: https://github.com/GeneAssembly/biosal/issues/299
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
use a ring in each worker for messages, and buffer them in worker

Link: https://github.com/GeneAssembly/biosal/issues/293
Link: https://github.com/GeneAssembly/biosal/issues/304
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
lower attempts from 4 to 2 (as long as there are more than 1 choice)

Link: https://github.com/GeneAssembly/biosal/issues/302
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>
use a ring in each worker for messages, and buffer them in worker

Link: https://github.com/GeneAssembly/biosal/issues/304
Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>