void allocopt(cli_s *cli, const opt_s *opt_stack);
allocates a stack-allocated opt_s struct to the
cli->opts dynamic array in a cli_s struct
using heap allocation. ezcli owns all opts passed to
allocopt(). your only responsibility is to:
make sure ctx and body lives through the
lifetime of your program.
make sure you run freecli() in your cleanup/die/termination
implementation.
see ezcli/cli_s and ezcli/opt_s for more details.