we'll soon have two runs of the option parser. The whole process will look like this:
* call register callbacks (may update options_description)
* first run of parser
* call intermediate callbacks (may check variable_map and update options_description)
* second run of parser (with new options_description)
* call checker callbacks (may check variable_map)