This allows most settings to be specified in the config file.
Defaults for these are set in the config parser; config file
values override defaults, CLI argument values override both
config file and defaults.
There's a few icky little details here, but I can't find any
cleaner way to do this. It'll all be a bit more consistent when
we implement T602: I set up the config file values as if we'd
already done that, so 'compose-wait' is in the 'schedule'
section not the CLI section, but until we do implement T602,
the CLI module has to read that one in. Otherwise the general
rule is that the module methods read in the values from config
if they're passed None, and the CLI passes None if the argument
is not passed. The alternative would be to have the methods
specify their defaults as CONFIG.get(blah) and also have the CLI
arguments' defaults set as CONFIG.get(blah), which avoids the
'if blah is None:' in the methods but means we're duplicating
the 'read default value in from config' logic; it seemed kinda
a toss-up which way was 'better', I went for 'slightly ugly'
over 'duplicated'.
Of note, there isn't a config file setting for 'ifnotcurrent'
(it really feels like a CLI special-sauce option to me), and
there isn't yet a CLI argument for 'jobs-wait' (the setting
that decides how long report-results will wait for jobs to
complete).