[AETHER-1104] Calculate PiPipeconf fingerprint in a deterministic way

New master after taking over a switch was pushing again the pipeline
and all the flows and groups. This was happening because DefaultPiPipeconf
fingerprint was not calculated in a deterministic way across the cluster.

This patch introduces the following changes:
- Implements toString method in each abstraction representing a pipeline
- Hashes the p4Info file to generate a consistent hash of the pipeline model
- Uses a sorted collection to generate a consistent hash of the extensions

Change-Id: I792283b0a9b821284add36b3aba52843f33527c3
diff --git a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java
index 2eed1bb..be1b71c 100644
--- a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java
+++ b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java
@@ -34,6 +34,8 @@
 import java.util.Objects;
 import java.util.Optional;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
+
 /**
  * Implementation of PiTableModel for P4Runtime.
  */
@@ -164,4 +166,21 @@
                 && Objects.equals(this.actions, other.actions)
                 && Objects.equals(this.constDefaultAction, other.constDefaultAction);
     }
+
+    @Override
+    public String toString() {
+        return toStringHelper(this)
+                .add("id", id)
+                .add("tableType", tableType)
+                .add("actionProfile", actionProfile)
+                .add("maxSize", maxSize)
+                .add("counters", counters)
+                .add("meters", meters)
+                .add("supportAging", supportAging)
+                .add("matchFields", matchFields)
+                .add("actions", actions)
+                .add("constDefaultAction", constDefaultAction)
+                .add("isConstTable", isConstTable)
+                .toString();
+    }
 }