common-cli: CLI framework

Make this class final, otherwise you'll need `Iterable<? extends CommandSet<T>>` in the constructor.