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
Use a variable for the proper string
Both variable declarations at the same place
Merge remote-tracking branch 'upstream/master' into fix-6660

Conflicts:
	src/preferences/PreferencesManager.js
Better order
Address review comments.
Merge pull request #6982 from SAPlayer/fix-6970

Made "Show in OS" OS-specific
Merge pull request #6848 from busykai/fix-6828

Fix #6828. Bracketize Win paths returned by node.
Merge branch 'master' into busykai-fix-6660

Conflicts:
	src/preferences/PreferencesBase.js
	src/preferences/PreferencesManager.js