common-cli: CLI framework

No need to have `public` for things in an interface.