Prevent caching conditionally

The basic reasoning of this PR:

- shiny app objects and render functions must never be cached, so we use `knitr::asis_output(..., cacheable = FALSE)`
- shiny tags and HTML objects can be cached only when they do not have dependencies (`length(meta) == 0`)
- the `cacheable` argument of `asis_output()` was added at https://github.com/yihui/knitr/commit/0d3ab27d8f1b7ae8530742fa69e9f658009cc4ac, so that this can be a general approach in knitr to stop improper caching (client packages only need to specify `cacheable = TRUE/FALSE`, instead of checking the chunk option `cache`)

@jcheng5 @jmcphers @jjallaire