use withCallingHandlers() so that users can do error handling like recover()

If I understand you guys correctly, here is probably what we want to do. Now we can `options(shiny.error = recover)` if we want to see the call stacks when errors occur, and examine the frames, although the number of frames can be quite large (more than 40 before the relevant frames are reached).

I have tried my best to insert the new `shinyCallingHandlers()` to the places where I think are relevant. There are a couple more `try()` calls without it. I guess they do not need it, but @jcheng5 certainly knows more than I do.

#249 #217