Add session scope

When I first built it, the PreferencesManager had a "session" scope that was used to hold transient preference values with a priority above all of the scopes. We got rid of it because it had no concrete use case. @busykai is already working on an extension that needs an in-memory scope (it auto-detects indentation and then sets the value for the session).

Having an official "session" scope is better than having multiple extensions that add their own in-memory scope.

This change should not affect any user-facing behavior because nothing is actually set in the session scope.