Improve handling of args when calling commands, esp. positionals
Improve handling of args when calling commands, esp. positionals

Most of the complexity here is due to the fact that positional args can
have default values, which makes them optional when calling the command.
This seems like it might be a misfeature. As a reminder to myself, the
purpose of that is to allow generic commands that have required args,
such as `host`, that are static in a given project. This makes calling
such commands less tedious in the common case.

wylee/runcommands,wylee/runcommands