[CORD-2486] Improve Mcast CLI APIs

It adds following commands:
- sr-mcast-tree which shows the mapping group-tree
- sr-mcast-next which shows the mapping device-next
- mcast-routes which is similar to the unicast command (routes)

It improve following commands:
- mcast-join adds completer and improves output
- mcast-delete adds completer and improves output
- mcast-show improves output and adds completer

Change-Id: I4e273ac23b05142026b6b77317b0c9b7af76c3ec
diff --git a/cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java b/cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java
index 5c34f9e..26dbfde 100644
--- a/cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java
@@ -30,6 +30,14 @@
         description = "Delete a multicast route flow")
 public class McastDeleteCommand extends AbstractShellCommand {
 
+    // Delete format for group line
+    private static final String D_FORMAT_MAPPING = "Deleted the mcast route: " +
+            "origin=%s, group=%s, source=%s";
+
+    // Update format for group line
+    private static final String U_FORMAT_MAPPING = "Updated the mcast route: " +
+            "origin=%s, group=%s, source=%s";
+
     @Argument(index = 0, name = "sAddr",
             description = "IP Address of the multicast source. '*' can be used for any source (*, G) entry",
             required = true, multiValued = false)
@@ -61,12 +69,14 @@
 
         if (egressList == null) {
             mcastRouteManager.remove(mRoute);
+            print(D_FORMAT_MAPPING, mRoute.type(), mRoute.group(), mRoute.source());
         } else {
             // check list for validity before we begin to delete.
             for (String egress : egressList) {
                 ConnectPoint eCp = ConnectPoint.deviceConnectPoint(egress);
                 mcastRouteManager.removeSink(mRoute, eCp);
             }
+            print(U_FORMAT_MAPPING, mRoute.type(), mRoute.group(), mRoute.source());
         }
     }
 }