Behave better in an interactive environment.

The --repl flag is lacking in a few ways. For one, it means you can only
experiment with drake via -main, and not use smaller functions (since
any one of them may decide to shut down your repl!). Even if you do
pass --repl, the "do nothing" behavior is pretty useless: it will
continue executing whatever function it was in, despite the error
state that made it want to shut down.

So instead, I have changed (shutdown 1) to throw an exception, and added
a handler to -main that catches that exception and shuts down. For
repl use, you can call drake instead of -main, which is identical
except that it does not catch the shutdown exception, so you get a
stacktrace in your repl.