Improve error messages produced when a shell command fails

Slingshot was printing the entire lexical context, which contains the user's entire shell environment at least three times. This is so much noise that problems were un-debuggable. I've changed it to not include the local context, by using raw `ex-info` instead of slingshot to throw; I also include the shell script that failed in the output. Should help for things like #116.