attempted to introduce error type to report unexpected arg types to sh functions... may need to learn something about reflection in order to make the error message more useful, apparently
improve error message for IncomprehensibleCommandModifier a bit using some reflection.

I'm sure there's at least 104 edge cases this ignores because reflection.  But there's only so many hours in a day, and this is better than it was before.
gofmt
implement sh.Start(), which spawns a RunningCommand from the pattern you've set up and returns a reference to it.
implement sh.Run(), which spawns a command, waits for it to exit, and panics if it exited unsuccessfully.  the sh() form is now equivalent to this.