This is a safety push.  I've updated the <base/cmd> code to permit vectors
and sets as scalar values.  This is in addition to the previous behavior,
which treated those types as containers for repeated options.

A set or vector passed as a scalar is assumed to be in a (verrry simple)
CSV format.

Another change: if the set or vector has default contents, the first
appearance of its associated option on the command line will clear the
container before adding to it or replacing it.  This change also alters
the pre-existing behavior regarding repeated options.  So if you use
a set or vector and provide defaults, a user-provided override will
replace those defaults, not add to them.

Now the bad news: this code currently has some kind of weird heap overrun
problem.  Valgrind is complaining of an overrun in an os-internal function
(_getopt_internal_r) and the result is a corruption of the array of
strings used in the unit test.  I'm being too distracted today to debug
this, but this code should NOT BE PUSHED TO MASTER until we figure it out.