1) Adjust Cli.CliBuilder to return the same GroupBuilder on calls to withGroup() with the same name
2) Adjust Cli.GroupBuilder to do state checks for the description and the default command so that you can be certain that the description and default command are only set once.
Add single command support