Fix breaking options on taps again (second time in two weeks, sob).
To avoid doing this again: also add a test for this case (that I've
verified would have caught these cases).
Refactor the CLI::Args module so it doesn't have different paths to
check arguments depending on whether the arguments have been parsed or
not. Instead, set the values we need from the global ARGV at
first, global initialisation time where they will be thrown away when
the actual arguments are parsed.
To do this some other general refactoring was needed:
- more methods made private when possible
- e.g. `HEAD?` used consistently instead of `head` before arguments
are parsed.
- formula options are only parsed after named arguments are extracted
- Rename `cmdline_args` to `argv` to make it more obvious where they
come from.
- Make the `if args_parsed` early return into `unless args_parsed` to
(hopefully) make it clearer that this is not the "normal" case and
to not check `argv` unless arguments haven't been parsed.