free() of new config strings depends on whether they are used.
Require explicit --config_file=file.

As a side effect, allows mixing --config_file and other options,
with the obvious cumulative effects.
If config validation fails because not a directory, show it.
Daemonize earlier.

Otherwise wrong process ends up listening, and dies.
Make daemonize() chroot conditional.
The warning message args were swapped.
Add clarifying comment.