Introduce experimental :caught option

It's experimental for now because it needs to be able to handle being
called with either 1 arg (for standalone, clojure.main/repl's :caught),
or 0 args (for nREPL, since constructing a form that passes *e in as the
arg isn't something I'm interested in doing). And since that feels a bit
annoying, I don't want to commit to supporting it until we figure out
how custom nREPL error handling will work.

A tradeoff we've discussed already is that when :caught is specified for
an nREPL run, we end up clobbering the *1, *2, *3 values with new ones.

Example usages:

    lein trampoline run --caught "clojure.repl/pst" --standalone
    lein trampoline run --caught "(fn ([] (println *e)) ([e] (println e)))"

refs technomancy/leiningen#799