Refine sub-command execution

Remove the cmdline array. Each sub-command is free to do whatever with
the remaining arguments.

Format string substitution was done too early. Now we just be lazy and
do it later. External command execution is now wrapped in function
run_external_command(), in which format string substitution is always
performed for its arguments.

We do not do format string substitution for sub-commands, instead we
pass the user arguments verbatim, allowing the sub-command to decide
whether it will then do format string substitution. This is required for
proper "sub-command chaining" to work; see the new sub-command 'each',
for the following command line:

    ffcast -ww each png %g.png

Before this change, the 'png' sub-command would never see the "%g"
string, since it had been substituted early on. As a result, 'png' tries
to write to the same file for each selection, which is wrong. Now, 'png'
will see the user arguments verbatim, and it does the format string
substitution itself. And since 'each' sets the region variables to
reflect the geometry of the current selection in the list, the
substitution works as expected.