Add keys to intents

- use Key class rather than String for intent keys
- add CLI option to specify a string key
- add key field to constructors for connectivity intents
- translate id into a key if no key is specified

Change-Id: I69ffbad93bc3daddf06a67cb0cffa2130e781b37
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
index 8d962a6..74704d0 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
@@ -71,13 +71,15 @@
         TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
         List<Constraint> constraints = buildConstraints();
 
-        SinglePointToMultiPointIntent intent = new SinglePointToMultiPointIntent(
-                                                                                 appId(),
-                                                                                 selector,
-                                                                                 treatment,
-                                                                                 ingressPoint,
-                                                                                 egressPoints,
-                                                                                 constraints);
+        SinglePointToMultiPointIntent intent =
+                new SinglePointToMultiPointIntent(
+                        appId(),
+                        key(),
+                        selector,
+                        treatment,
+                        ingressPoint,
+                        egressPoints,
+                        constraints);
         service.submit(intent);
         print("Single point to multipoint intent submitted:\n%s", intent.toString());
     }