Add onChange function for handling events

This is an alternate implementation of #180. Here are some notable differences:

* The function is called `onChange` instead of `eventFilter`.
* `onChange` can be used within `reactive()`, `observe()`, and the `renderXx()` functions.
* The approach in #180 actually checks for the first change by using a state variable, whereas this only checks for a particular value that indicates an input is uninitialized. If we're using it only for actionButtons, that's not a big deal, but if it's important to generalize over other inputs whose starting value is unpredictable, that would be a limitation.
* This uses the new input classes that we recently introduced.

@jcheng5 what do you think of the names, and the approach in general?

If you have any suggestions for the docs, let me know.

A sample app:

```
server <- function(input, output) {

  # onChange inside observe()
  observe({
    onChange(input$goButton, print(paste("direct observe:", input$obs)))
  })


  # onChange inside reactive() - also use an observer so that it gets flushed
  foo <- reactive({
    onChange(input$goButton, input$obs)
  })
  observe({
    print(paste("indirect observe:", foo()))
  })


  # onChange inside a renderXx function
  output$textout <- renderText({
    onChange(input$goButton, paste("via renderText, firstRun=TRUE:", input$obs))
  })

  # onChange inside a renderXx function, but don't run until actionButton is
  # clicked.
  output$textout_no_runfirst <- renderText({
    onChange(input$goButton, paste("via renderText, firstRun=FALSE:", input$obs),
      runFirst = FALSE)
  })
}

ui <- pageWithSidebar(
  headerPanel("Click the button"),
  sidebarPanel(
    sliderInput("obs", "Number of observations:",
                min = 0, max = 1000, value = 500),
    actionButton("goButton", "Go!")
  ),
  mainPanel(
    textOutput("textout"),
    textOutput("textout_no_runfirst")
  )
)

runApp(list(server=server, ui=ui))
```