Implement shared secret

Restricts access to Shiny processes to only those who know the secret
(namely the owning shiny-server process)
Code review feedback from @trestletech

- Fix freeSock inadvertent logic removal (firing vacantSched if no
  workers left)
- Move vacantSched subscription code to constructor
- Allow arbitrary headers to be set on websocket client
Merge remote-tracking branch 'rstudio/master'