Allow CommandMetadata to be injected into Cli commands

This allows `HelpOption` to be used with commands via `Cli.parse`.

Without this, attempting to use `HelpOption` with a command via the `Cli` class instead of `SingleCommand` results in a `NullPointerException` when `HelpOption.showHelpIfRequested()` is called. This commit allows the pattern `git add -h` to show help correctly.