Load extensions before loading project, then fire APP_READY.

Fix for #1951

Change app initialization to load extensions first, then load the project and initialize the working set before firing the ``APP_READY`` event. Many thanks to @DennisKehrig.

While cleaning up the startup process, I opportunistically cleaned up a lot of startup code by deferring some initialization out of the module init (implicit and/or explicit) and into ``APP_READY`` and ``HTML_READY`` handlers as appropriate. 

Unit, performance and extension tests are passing.