Rewrite commands test runner interface

Took about an hour with judicious use of perl regex and emacs macros.

This change is very very useful in my opinion because it removes one
the last remaining places where we felt we needed to repeat the command
name as a string literal. It was unlikely this would ever change in the
future but it made our test setup very odd. Now testcmd.RunCommand
just exposes an interface to run a command with some args and he constructs
the context necessary.