Don't MVM.updateLayout() until we're ready

MVM.updateLayout was getting called before its htmlInit handler was run. This was due to the statusbar's htmlInit handler running first which triggered a workspace updatelayout which then triggered an MVM updatelayout before MVM was initialized.

Fixes #9114 
@ingorichter 
The problem is:

The StatusBar appends its rendered content to `#.main-view` and then immediately calls its `hide()` method which then calls `WorkspaceManager.recomputeLayout()` That then triggers the `MVM._updateLayout()` as you know. The only thing I can think of is that removing unused vars caused the `requirejs` dependency tree to think StatusBar.js needs to be loaded before MVM causing its app init handler to be inserted after status bar's app init handler so it gets called last.  

The other thing we could do is force the MVM module to have a higher dependency but it seems like just registering the workspace listener during the init is a more simpler fix.  Modules shouldn't add event listeners before they are ready to receive events. I could have moved the other event registrations into the htmlInit handler but those seemed benign enough to not worry about. The only one that *could* possibly happen without some kind of human intervention is the `ProjectManager.projectOpen` event but I think that one doesn't happen until after `appReady` so that's not a problem for MVM.