change behavior for boolean flags
With this change, specifying --x on the commandline sets the value of
option :x to true. Specifying --no-x sets the value of option :x to
false. Not specifying either on the commandline sets the value of option
:x to its default.
(Previously, using --x would set the value of :x to the opposite of its
default value, and not specifying it would set :x to the default value,
and using --no-x would result in an error.)
There is one special case to this, which is that an option called :no_x
gets the inverted behavior of what the option :x would have.
Specifically, specifying --no-x on the commandline will set the value of
:no_x to true, specifying --x will set the value of :no_x to false, and
not specifying either will set the value of :no_x to its default.