Change handling of bool command line args to allow an unset state
For bool valued flags we were always producing the command line string corresponding to a false flag value, even if the flag was not set. For example we'd always get "--disable-shared". It is important for cabal-install to be able to take an empty set of flags, override a few flags and turn the flags back into command line strings without getting a lot of extra defaults. Partly this is because we have to work with older versions of the Cabal library command line which does not recognise the new options.