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/incubator/api/src/main/java/org/onosproject/incubator/net/config/NetworkConfigService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/config/NetworkConfigService.java
index 455ed68..5a89ccb 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/config/NetworkConfigService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/config/NetworkConfigService.java
@@ -17,6 +17,7 @@
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.annotations.Beta;
+import org.onosproject.event.ListenerService;
 
 import java.util.Set;
 
@@ -26,7 +27,8 @@
  * should act on or configure the network.
  */
 @Beta
-public interface NetworkConfigService {
+public interface NetworkConfigService
+    extends ListenerService<NetworkConfigEvent, NetworkConfigListener> {
 
     /**
      * Returns the set of subject classes for which configuration may be
@@ -140,17 +142,4 @@
      */
     <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass);
 
-    /**
-     * Adds the specified network config listener.
-     *
-     * @param listener network config listener
-     */
-    void addListener(NetworkConfigListener listener);
-
-    /**
-     * Removes the specified network config listener.
-     *
-     * @param listener network config listener
-     */
-    void removeListener(NetworkConfigListener listener);
 }