extract SignalHandler and Logger into their own files
WorkerGroups shouldn't be in the nitpicky business of queues

TODO: finish tests for the new classes
oops. that should be require, not include