Faster tag rendering
Faster singleton detection
More tag writing tweaks
Restructure logic and simplify
Merge pull request #410 from wch/faster-tags-2

Faster tags
add selectize=TRUE to selectInput(), but disable deletion for single input

hopefully this is a good compromise for #404
roxygenize
update the test for selectInput() accordingly
10px bottom margin for selectize input
Merge pull request #411 from yihui/selectize/backspace

Selectize backspace issue
Change version to 0.9.0
Fix selectize misordering on updateSelectInput

Repro case at https://gist.github.com/jcheng5/9403917
Make showcase mode work with .r files
Merge pull request #415 from jcheng5/bugfix/showcase-case

Make showcase mode work with .r files
Merge pull request #414 from jcheng5/bugfix/selectize-order

Fix selectize misordering on updateSelectInput
Change example licenses to MIT
fixes #416: use tags$code() to escape the code in showcase mode

and format(..., indent = FALSE) to prevent indentation of <code>
Merge pull request #417 from yihui/bugfix/showcase-escape

fixes #416: use tags$code() to escape the code in showcase mode
Allow '.' character in input/output IDs

I always thought dots and colons were illegal in HTML ID attributes,
but I was wrong. They are legal and because they are commonly used
in identifier names in R, Shiny users often like to use them. Worse,
Shiny gave no warnings when using dots and only a pretty advanced
subset of functionality would NOT work when using dots, causing
everyone to think they were fully supported in Shiny.

This commit ought to bring reality in line with perception. It turns
out that jQuery has an escaping scheme in its queries that allow us
to support dots after all. As long as we are always careful to
surround IDs with $escape when putting them in a query, we'll be in
good shape.

Colons will probably still cause problems at the moment because we
use colons internally to separate input type from input name. But
we've never seen users try to use colon in IDs before, so we can
wait to fix it until that becomes a problem.
It's important to return values in JS. heh.