void addopt(cli_s *cli, ...opts);
allocates a variable amount of opt_s structs to the
cli->opts dynamic array in a cli_s struct.
see ezcli/cli_s and
ezcli/opt_s for more details.
note: addopt() does NOT take ownership of opts passed to
it. by “allocates”, i mean it allocates heap space for POINTERS of your
opts, not the stack memory they use.