Setting has as values partial sets of option assignments,
as given by the user in a configuration file or command line options.
is the associated type of complete configurations, as the
create is a template haskell computation. Given names for the "options"
type, the "settings" type and the "set" function, and a list of settings
(pairs of their names and types), it creates those datatypes and function,
and an instance of the