[ONOS-4014] Refactor *Id classes to extend from Identifier class

- Refactor most of *Id classes in onos-api package
- Refactor all of *Id classes in incubator package

Change-Id: Ief6322d3fb42c80e82f695e9d4dcee439346215b
diff --git a/core/api/src/main/java/org/onosproject/net/flow/FlowId.java b/core/api/src/main/java/org/onosproject/net/flow/FlowId.java
index 52500f5..b6d952f 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/FlowId.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/FlowId.java
@@ -15,17 +15,15 @@
  */
 package org.onosproject.net.flow;
 
-import com.google.common.base.Objects;
+import org.onlab.util.Identifier;
 
 /**
  * Representation of a Flow ID.
  */
-public final class FlowId {
-
-    private final long flowid;
+public final class FlowId extends Identifier<Long> {
 
     private FlowId(long id) {
-        this.flowid = id;
+        super(id);
     }
 
     public static FlowId valueOf(long id) {
@@ -33,26 +31,6 @@
     }
 
     public long value() {
-        return flowid;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (obj.getClass()  == this.getClass()) {
-            FlowId that = (FlowId) obj;
-            return Objects.equal(this.flowid, that.flowid);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(this.flowid);
+        return this.identifier;
     }
 }