run method
Parses args
and invokes Command.run on the chosen command.
This always returns a Future in case the command is asynchronous. The
Future will throw a UsageException if args
was invalid.
Implementation
T? run(Iterable<String> args) => runCommand(parse(args));