Define schema for config options. Helper to generate a header fragment
to declare the types.
Unlike the old config_opts.h approach, we will not intialize values in
the header. This avoids a recompile if there is a change and also allows
us to specify different defaults and do parsing and validation at runtime.
Instead, we'll intialize values in the constructure of the containing
class.