The Destroy button for running messages works now
Use the Protocol module in a few more spots
Eliminate JSONConfigFile and only reload queue configs on SIGHUP
Handle SIGCHLD using a self-pipe trick, factor out a child handler method

The previous code would wait until the next loop tick to handle an ungraceful
child exit. This refactoring handles the child exit immediately.
Add Protocol method set_nonblocking
Remove close_all_fds from the queue worker module

These fds aren't open in the parent queue manager, so there is no need to
close them in the queue workers.
Queue logging consistency changes
Remove tail recursion, rely on the main loop
Queue manager refactor to use the same self-pipe and main loop layout as the queue workers