Fix prefs change handler

Don't register change handler with a reference to the $class and $change
value, but only for the actual preferences. This caused up to three
change handlers to be registered per pref.

Remove duplicate change handler.
Oops... that wasn't a duplicate change handler. (Partially) Revert
previous commit.
Merge branch 'public/7.7' into public/7.8