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/net/edge/EdgePortService.java b/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java
index c91018e..89a2c17 100644
--- a/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java
+++ b/core/api/src/main/java/org/onosproject/net/edge/EdgePortService.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net.edge;
 
+import org.onosproject.event.ListenerService;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.flow.TrafficTreatment;
@@ -27,7 +28,8 @@
  * is considered an edge port if it is an active port and does not have an
  * infrastructure link associated with it.
  */
-public interface EdgePortService {
+public interface EdgePortService
+        extends ListenerService<EdgePortEvent, EdgePortListener> {
 
     /**
      * Indicates whether or not the specified connection point is an edge point.
@@ -70,18 +72,4 @@
     void emitPacket(DeviceId deviceId, ByteBuffer data,
                     Optional<TrafficTreatment> treatment);
 
-    /**
-     * Adds a listener for edge port events.
-     *
-     * @param listener listener to be added
-     */
-    void addListener(EdgePortListener listener);
-
-    /**
-     * Removes the listener for edge port events.
-     *
-     * @param listener listener to be removed
-     */
-    void removeListener(EdgePortListener listener);
-
 }