Fix argument parsing oddity with -noX
bitcoind -X -noX ends up, unintuitively, with X set.
(for all boolean options X)
This result is due to the odd two-pass processing of arguments. This
patch fixes this oddity and simplifies the code at the same time.