Better handling of observer errors

This fixes #603.

This also should have some way for users to control how to deal with errors. Here are some options:

* Handle errors in observers
* Set a global option
* Option in observer()

We can also remove the `withCallingHandlers` at https://github.com/rstudio/shiny/blob/be4eff413d71aec82b59ae8cc45c2c4b4ef92244/R/react.R#L66.

We also should have unit tests.