See WIP in `clibase-usage`. Essentially, `clibase` should accept arguments in a way that looks like: ```go { "EnumThenSlice", clibase.Use{ Name: "coder", Args: []clibase.Arg{ { Name: "operation", Value: clibase.EnumOf(nil, "stop", "force-stop"), }, { Name: "workspaces", Value: clibase.StringsOf(nil), }, }, }, "coder <stop|force-stop> <workspaces...>", }, ``` We should remove the concept a Middleware in addition to this change.