Introduce conditional respawning for subprocesses.

In other words, don't respawn a subprocess if constructing the app
goes badly, likely due to missing configuration.

Also transition some of the configuration parsing and defaults
handling to the merge strategy I've been using recently.