func NewCmdWithRunner(cmdName string, runner func()) (*CmdWithRunner, error) {
	if cmdName == "" {
		return nil, errors.New("cmdName cannot be blank")
	}
	for _, r := range cmdName {
		if unicode.IsSpace(r) {
			return nil, errors.Errorf("cmdName cannot contain whitespace: %q", cmdName)
		}
	}
	return &CmdWithRunner{
		cmdName: cmdName,
		runner:  runner,
	}, nil
}
NewCmdWithRunner creates a new CmdWithRunner for the provided name and runner. Returns an error if the provided name
is not a legal command name.
package amalgomated
import (
	"fmt"
	"unicode"
	"github.com/pkg/errors"
)
type StringCmdSet interface {
	Run(cmd string)
	Cmds() []string
}
type CmdWithRunner struct {
	cmdName string
	runner  func()
}
func (c *CmdWithRunner) Name() string {
	return c.cmdName
}