Validate router, apps, and handlers during startup

This change will result in an ImproperlyConfigured exception during startup
if there are any problems initializing the router, apps, or handlers.
Previously, these might not be noticed until the first request, and perhaps
not even then unless you were reading the logs to see the exceptions
logged.

What do folks think about this? It would have saved me several hours of debugging today due to a simple but silently ignored error.  

(Note: this is against the simplified handler loading branch, so needs to not be merged until after that.)