Cache templates in memory.
As long as we're concerned about hitting the EMFILE limit, we'll want to reserve as many connections as we can for concurrent websockets. Caching may help avoid a crash on repetitive 404 requests coming in.
Check for non-existent schedulers before addressing.

Addresses the fatal error in #25.
Added 503 Velvet Rope. Closes #29.
Begin worker timeout at startup in case there are no connections to a worker.
Privitize the AppSpec class and de-staticize the functions so we can leverage an internal cache in that class.
Infinitely cache the supplemented appSpec.

Creates a memory leak (will need to add a listener for deprecated schedulers), but improves page serves by 23%. May motivate some optimization to the constant restart.txt checks.
Fire events on the termination of the last worker in a scheduler. Prevent memory leaks in scheduler registry and config router.
Created setting to manage whether or not to enable local app overrides.

By default, local .shiny_app.conf files will be ignored unless this setting is explicitly provided. Currently just one global setting, but could be moved to a per-server model if there were enough demand.
Track the PID of the leaf R process in the app worker for easier process management.