A first attempt of the custom error type for unsatisfied input dependencies

Example:

```s
runApp(list(
  ui = fluidPage(
    checkboxGroupInput('foo', 'Check some letters', choices = head(LETTERS)),
    selectizeInput('bar', 'Select a state', choices = state.name),
    actionButton('go', 'Go!'),
    plotOutput('plot')
  ),
  server = function(input, output) {
    output$plot <- renderPlot({
      validateInput(
        input$go,
        validateCondition(input$foo, 'Check at least one letter!'),
        validateCondition(input$bar != '', 'Please choose a state.')
      )
      plot(1:10, main = paste(c(input$go, input$bar, input$foo), collapse = ', '))
    })
  }
))
```

Another test case from Joe: https://gist.github.com/jcheng5/21e04716a6f72494887c