Add a -WhatIf to programs based on ProgramBase

This option evaluates the configuration from the command line, configuration
files, environment and defaults as if the program was about to run, prints
it to the log and to the config, and then exists successfully. This can be
very useful when debugging configuration issues.