Adding some base-classes to eliminate event and listener boiler-plate code throughout a number of subsystems.

Refactored all core components to take advantage of this; apps remain to be done.

Change-Id: Ib0935ba07ff81b0fa032534004ec9ac6187cbf22
diff --git a/core/api/src/main/java/org/onosproject/cluster/ClusterService.java b/core/api/src/main/java/org/onosproject/cluster/ClusterService.java
index e708588..015a648 100644
--- a/core/api/src/main/java/org/onosproject/cluster/ClusterService.java
+++ b/core/api/src/main/java/org/onosproject/cluster/ClusterService.java
@@ -18,12 +18,14 @@
 import java.util.Set;
 
 import org.joda.time.DateTime;
+import org.onosproject.event.ListenerService;
 
 /**
  * Service for obtaining information about the individual nodes within
  * the controller cluster.
  */
-public interface ClusterService {
+public interface ClusterService
+    extends ListenerService<ClusterEvent, ClusterEventListener> {
 
     /**
      * Returns the local controller node.
@@ -63,18 +65,4 @@
      */
     DateTime getLastUpdated(NodeId nodeId);
 
-    /**
-     * Adds the specified cluster event listener.
-     *
-     * @param listener the cluster listener
-     */
-    void addListener(ClusterEventListener listener);
-
-    /**
-     * Removes the specified cluster event listener.
-     *
-     * @param listener the cluster listener
-     */
-    void removeListener(ClusterEventListener listener);
-
 }