terminate on first error and report errors from communicate
refactored Instances.Run out of main
Instances: refactor & doc comments
MessageQueue: dump all the remaining messages on shutdown
MessageQueue: rudimentary tests for shutdown