made nested commands report errors from the calling command's perspective

also added tests for the fatal directive
fix bug: properly report missing argument for custom commands

I broke this when I changed custom command args to be objects and never noticed ...
so I added a test for it
can now use \ to avoid info expansion

eg `echo "\%one"` will actually echo "%one" as expected now
also fixed the ordering of expansions
-	info expansion really should have come first all along
-	but it was more convenient to let it do env expansion first and I was being lazy
-	but I finally have a case where it matters, and info expansion *really* needs to happen first
added more tests of course
-	also fixed it so test_execute_output will return false if any of its tests fail
-	useful for code like `$cmd->test_execute_output($out, $testname) or diag "something"`