Add FlowEventDispatcher and implement event handler of FlowManagerModule.

- Added FlowEventDispatcher to handle FlowManager's events.
- Changed visibility of FlowBatchStateChangedEvent, FlowStatesChangedEvent and
  FlowStateChange classes to public.
- Implemented addListener() and removeListener() methods on FlowManagerModule.
- It is needed for Intent runtime service
  because it uses event handler of FlowManagerModule.
- This task is a preperation for ONOS-1691 and ONOS-1739.

Change-Id: I9c76d8c0dc06469698b087849f066b8531dd8736
diff --git a/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java b/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
index ccf6081..39499f4 100644
--- a/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
+++ b/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
@@ -52,6 +52,7 @@
     private ISharedCollectionsService sharedCollectionService;
     private FlowMap flowMap;
     private FlowBatchMap flowBatchMap;
+    private FlowEventDispatcher flowEventDispatcher;
 
     @Override
     public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -96,6 +97,9 @@
 
         flowMap = new SharedFlowMap(sharedCollectionService);
         flowBatchMap = new SharedFlowBatchMap(sharedCollectionService);
+        flowEventDispatcher =
+                new FlowEventDispatcher(flowMap, flowBatchMap, matchActionService);
+        flowEventDispatcher.start();
     }
 
     /**
@@ -172,14 +176,12 @@
 
     @Override
     public void addListener(FlowManagerListener listener) {
-        // TODO Auto-generated method stub
-
+        flowEventDispatcher.addListener(listener);
     }
 
     @Override
     public void removeListener(FlowManagerListener listener) {
-        // TODO Auto-generated method stub
-
+        flowEventDispatcher.removeListener(listener);
     }
 
     private MatchActionOperations createNewMatchActionOperations() {