Extract common ID generation logic using IdBlockAllocator

- Define IdGenerator<T> interface
- Implement AbstractIdBlockAllocatorBasedIdGenerator<T>, which
  has the common logic for the existing IntentId, FlowId, MatchActionId,
  and MatchActionOperationsId generator implementations.

Change-Id: I7aeea249df1710719760ed477bffe62853577e0f
diff --git a/src/main/java/net/onrc/onos/core/matchaction/MatchActionService.java b/src/main/java/net/onrc/onos/core/matchaction/MatchActionService.java
index 161ed91..fa6b34f 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/MatchActionService.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/MatchActionService.java
@@ -4,6 +4,7 @@
 import java.util.Set;
 
 import net.onrc.onos.api.flowmanager.ConflictDetectionPolicy;
+import net.onrc.onos.core.util.IdGenerator;
 
 /**
  * An interface for the match-action service.
@@ -51,14 +52,14 @@
      *
      * @return the ID generator for MatchActionId
      */
-    MatchActionIdGenerator getMatchActionIdGenerator();
+    IdGenerator<MatchActionId> getMatchActionIdGenerator();
 
     /**
      * Gets the ID generator for MatchActionOperationsId.
      *
      * @return the ID generator for MatchActionOperationsId
      */
-    MatchActionOperationsIdGenerator getMatchActionOperationsIdGenerator();
+    IdGenerator<MatchActionOperationsId> getMatchActionOperationsIdGenerator();
 
     /**
      * Adds event listener to this service.