shill: PropertyChangeNotifier: Initial commit

Add a PropertyObserver, whose task is to track changes
to the returned value of an accessor.  Further, create
a ServicePropertyChangeNotifier, whose task is to monitor
a collection of PropertyObservers for a Service and call
the appropriate Emit*Property method for those properties
which have changed.

BUG=chromium:379948
TEST=Unit tests
Change-Id: I450b74b388f8ecb44010f277cc77149412b24950
Reviewed-on: https://chromium-review.googlesource.com/202441
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Queue: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/property_observer_interface.h b/property_observer_interface.h
new file mode 100644
index 0000000..608bd8a
--- /dev/null
+++ b/property_observer_interface.h
@@ -0,0 +1,28 @@
+// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SHILL_PROPERTY_OBSERVER_INTERFACE_
+#define SHILL_PROPERTY_OBSERVER_INTERFACE_
+
+#include <base/basictypes.h>
+
+namespace shill {
+
+// An abstract interface for objects that retain a saved copy of
+// a property accessor and can report whether that value has changed.
+class PropertyObserverInterface {
+ public:
+  PropertyObserverInterface() {}
+  virtual ~PropertyObserverInterface() {}
+
+  // Update the saved value used for comparison.
+  virtual void Update() = 0;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(PropertyObserverInterface);
+};
+
+}  // namespace shill
+
+#endif  // SHILL_PROPERTY_OBSERVER_INTERFACE_