Clean up pref change notification handling.

This is a complete overhaul of PrefValueStore, PrefStore, PrefNotifier, and PrefService. Specifically:

- Add an observer interface to PrefStore that can be used to notify the upper layers of the pref system about value changes. Currently, it's unused mostly, but that'll change when we refactor ExtensionPrefStore and ConfigurationPolicyPrefStore.
- Make PrefNotifier be a dependency of PrefValueStore. That helps in keeping the pref change detection handling local to PrefValueStore.
- Clean up related unit tests, removing redundant mocks and gmockify others.

BUG=64893
TEST=Compiles and passes tests

Review URL: http://codereview.chromium.org/5441002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68574 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index b53706a..1c3e13b 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1990,8 +1990,9 @@
         'browser/prefs/in_memory_pref_store.h',
         'browser/prefs/pref_member.cc',
         'browser/prefs/pref_member.h',
-        'browser/prefs/pref_notifier.cc',
         'browser/prefs/pref_notifier.h',
+        'browser/prefs/pref_notifier_impl.cc',
+        'browser/prefs/pref_notifier_impl.h',
         'browser/prefs/pref_change_registrar.cc',
         'browser/prefs/pref_change_registrar.h',
         'browser/prefs/pref_service.cc',