The prefFlips feature was incorrectly determining the original value of
prefs being set on the user branch. When a pref does not have a user
branch value, asking for it via `PrefUtils.getPref()` or
`Services.prefs.get{Int,String,Bool}Pref()` will instead return the
default branch if it exists. In that case, we will record the current
default branch value as the pref's original user branch value.
When unenrolling and restoring original values, if we set the user
branch value of a pref to be the same as the default branch value then
it will no longer have a user branch value. However, if the default
value of pref changes between enrollment and unenrollment, then we are
restoring the original default branch value to the user branch, which
will not match the current default branch value and will override the
changed default branch value.
The `setPref` annotation handled this behaviour correctly: it explicitly
checks when computing original values if the pref is being set on the
user branch and there currently is no user branch value. This behaviour
has been refactored into `PrefUtils.getPrefStrict`, which is now used by
both `setPref`-annotated variables and the `prefFlips` feature.
Differential Revision: https://phabricator.services.mozilla.com/D311628