Add observeEvent and eventFilter functions for handling events
Code review feedback, part 1
a custom type of errors for unsatisfied input dependencies
we -> you
condition first, message second
factor out stop() code to a separate function
use the classes of the error condition as names of CSS classes in the output
filter out some common error classes
use shiny-output-error as the _prefix_ for CSS classes of error messages
add a function validateCondition() to avoid ambiguity

two advantages:

1. we no longer need to worry about input$foo being a list;
2. users have to explicitly call validateCondition() when they want error messages, so we know when to silently stop;
rewrite the lapply()/vapply() with a plain dumb for-loop
roxygenize
the logic of the last commit was not correct: we should not stop immediately on a non-condition object; instead, we still need to collect all messages on all conditions before we stop
cosmetic: both `if (FALSE) expr` and for-loops return NULL
since NULL in tag() will be dropped, there is no need to check is.null(icon)
Document session object

Also allow http handlers to return standard Rook responses instead of
httpResponse objects.
Remove delayedAssign which causes problems for downstream packages

See comment on d7eb9b2d18ee856339cf3160668beb5307115b4b
Merge pull request #472 from rstudio/bugfix/delayed-assign-2

Remove delayedAssign which causes problems for downstream packages
Refactoring/renaming of validation

- validateInput renamed to validate
- validateCondition renamed to need
- Removed ability to provide "bare" conditions. It is
  still possible to fail validation silently by passing
  FALSE as the second argument to need()
- Rather than using a two-element list to convey results,
  use a single result protocol; NULL is success, FALSE is
  silent failure, string is failure with message
- Tweak "missing input" semantics, add tests
Validation refactoring

- Move validation logic from shinywrappers.R to utils.R
- Don't coerce validation results; fail if not FALSE, NULL, or character
- Reverse order of stopWithCondition args