Rework shutdown

This set of patches is intended to make sure that the agent will reliably stop after a reasonable time if it has been requested to, even in some corner cases.

I removed the counting of shutdown requests: One request needs to be enough in case of for example a shutdown of the host or an automated restart.
By the way I forgot to ask but why call `reactor.stop` later instead of right now?  Stopping the reactor should always be the final step so calling it later doesn't make as much sense.  That's also why I called `reactor.stop` directly in the original code.