Faster tag rendering

Partially fixes #407. The doRenderTags portion of the code is about as fast as it was in Shiny 0.8.0. The rewriteTags passes for singleton and head processing is a lot of additional overhead though, with an overall result that is still slower than where we want to be.

```
library(shiny)
Rprof(line.profiling=TRUE)
system.time({
  n_choices <- 10000
  choices <- paste0("choice", 1:n_choices)
  names(choices) <- paste(choices, "name")
  s <- selectInput("select", "Select:", multiple = TRUE, choices = choices)
  format(s)
})
Rprof(NULL)

# Results on Joe's Core i3 Linux desktop

0.8.0:
   user  system elapsed 
  1.847   0.113   1.958 

master:
   user  system elapsed 
  6.321   0.213   6.532 

faster-tags:
   user  system elapsed 
  4.755   0.260   5.012 
```