Refactor app launch sequence to accommodate chrome's asynchronous initialisation of chrome.storage

To elaborate, lots of brackets code makes calls to PreferenceManager (and hence chrome.storage) at the 'top level' of the file - where it is evaluated immediately by require.js. That leads to a race condition between the chrome.storage init call and require js.

This solution initialised chrome.storage first, then calls the main require() function *afterwards*, eliminating the race condition.

(the global window.storageObj is still a hack, but that's a separate issue from this one)