Enable prefix matching for commands

With these commits, it's possible to match a command based on a non-ambiguous prefix of its name, in addition to the full name. For example, in hugo, you could invoke the `server` command with just `hugo s`, since none of the other commands start with an `s`.

I added a basic test for this functionality as well (and of course I checked that it works with `go test`), but let me know if you'd like to see some other behaviors tested; I'll see what I can do.