add CommanderNoArgs interface

Allows more convenient validation against unwanted extra args.

Before:

        func (c *myStruct) Execute(args []string) error {
            if len(args) > 0 {
                return errors.New("got unwanted extra args")
            }
        }

After:

        func (c *myStruct) Execute() error {
            // extra args are checked automatically before calling Execute()
        }
You mean like for Command.AddCommand? The name will be ultimately saved into Command.Name. And I think we should change the parameter naming since it is not uniform.
- Command.AddCommand(command string ...
- Command.Find(name string ...
- newCommand(name string ...