* Adds logging
* Re-jigs the integration so messages are asked once the work has completed.
* Updates specs for the above.
Refactor the integration specs by extracting the worker threads into a class
Fix flakey test