Event reactives

Fixes `observeEvent` semantics and adds new `eventReactive` function.

Also allows `observe()` to encounter validation errors without ending the session.
@wch This is going to need to be revisited if/when #604 is merged