First pass at running message cancel and retry
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.
Also handle EAGAIN in do_read, needed for queue children