Fix #7442: make API consistent between PrefMan and Prefixed PrefMan.

Fix for #7442

The slightly higher level API provided by PreferencesManager (over the
PreferencesBase.PreferencesSystem) worked nicely but was inconsistent
with the API an extension author gets when they call
`PreferencesManager.getExtensionPrefs`. This change pushes that extra
behavior down into PreferencesBase.PreferencesSystem so that the
APIs are consistent.

This is a non-breaking change that basically adds to the API:

* doNotSave flag for set: calls to `set()` save automatically unless this flag is set. If extension code is already calling `save()`, that means that there will be an extra call to `save()`, but that should have minimal performance impact because `save()` does no saving when the scopes aren't dirty
* support for string contexts: extensions would have to use complete object contexts previously. This adds support for the simpler string contexts and doesn't change the behavior for object contexts.