minor refactoring to making bombing out in the middle of a command more predictable and helpful

this also fixes a few outstanding bugs/prolems:
-	fatal() wasn't going to stderr ... d'oh!
-	when a command died, the die was propagating straight to the user
-	now it catches it and prints what went wrong
-	note that this is only true if the command dies in such a way as to trigger autodie
-	if it just exits w/ a non-zero value, it's still just exiting silently (fix that next)
this involved adding a way to test fatal(), so that's handy
also had to refactor fake_cmd a bit to centralize its fake "me" and fake "command"
handle all cases where a command fails as a fatal error

okay, I was wrong: if a shell commands exits non-zero, autodie _will_ throw that as an exception
-	so those cases _were_ already being handled
what I _wasn't_ handling, though, were the cases when a code directive returns false
handled now
now prints remaining directives after a mid-command failure

this enables at least manual picking-up-where-you-left-off
which is better than nothing
although the ultimate goal is to get to a --continue implementation