Initial working implementation.

Missing documentation, test failures. This is primarily for review.
Document Async.waitForAll.
Fix unit tests.

Clean-up all the structures on remove: remove/add is used to setup the
tests.
Document the implementation.
Reinstall "user" backed by memory if load fails

"user" scope is treated differently than the rest of the scopes. if it
fails, then "user" scope is installed using memory storage.
additionally, when it fails due to ParsingError, the user is warned and
the configuration file is loaded so that it could be fixed.
Fix JSHint error.
Fix unit test failures.
Merge remote-tracking branch 'upstream/dangoor/6578-hidden-editor-options' into fix-6660

Seemingly working merge with current work by @dangoor in #6715.

Conflicts:
	src/preferences/PreferencesBase.js
	src/preferences/PreferencesManager.js
Fix #6828. Bracketize Win paths returned by node.
Merge remote-tracking branch 'upstream/master' into fix-6660

Conflicts:
	src/preferences/PreferencesBase.js
Add the rest of the scopes always.
Made "Show in OS" OS-specific
Load view state before generating the HTML.

Also forces CodeInspection to wait until the app is ready before updating the status
bar.
Don't start firing preference change events until appReady.

This is part of the fix for #6944. With the change in loading for
set up, causing errors for things like the status bar. By pausing
the preference changes until appReady, we avoid any code attempting
to alter the HTML based on preferences until after everything is
set up.
Use a variable for the proper string
Both variable declarations at the same place
Inject remote functions earlier after frameNavigated instead of loadEventFired
Merge remote-tracking branch 'upstream/master' into fix-6660

Conflicts:
	src/preferences/PreferencesManager.js
Better order
Address review comments.