Don't allow someone to request a stdin request to echo. Echo never reads from stdin, it just echos its arguments. You use 'cat' if you want to read from stdin.
A few other fixes because the tests were using filenames that are actually illegal on Windows, rather than just nonexistant.
Change the exception handling for commands so that unknown errors don't get silently squashed and then turn into hard-to-debug errors later.