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
Merge remote-tracking branch 'upstream/master' into fix-6660

Conflicts:
	src/preferences/PreferencesBase.js
Add the rest of the scopes always.
Merge remote-tracking branch 'upstream/master' into fix-6660

Conflicts:
	src/preferences/PreferencesManager.js
Address review comments.
Merge branch 'master' into busykai-fix-6660

Conflicts:
	src/preferences/PreferencesBase.js
	src/preferences/PreferencesManager.js
Merge branch 'master' of https://github.com/adobe/brackets