HTML dependency work

The new [htmltools](https://github.com/rstudio/htmltools) package provides a way for chunks of HTML to declare dependencies, where a dependency is a name, version, and file or URL path, along with a list of JS/CSS/meta/head directives.

Migrating Shiny over to this style of dependency loading, instead of `tags$head(singleton(...))`, gives us two main advantages: 1) makes it possible in many (not all) cases to deal with two components asking for the same library, and 2) provides interoperability with R Markdown, which also uses htmltools dependencies.

In the htmltools dependency scheme, if two chunks of HTML are rendered in the same document, and they each carry a dependency on the same library name but different versions, then the newer version is used, unless the older dependency has already been loaded into the document.