ONOS-542 Added ability for app bundle to carry it's own artifacts, including feature repo. Fixed onos-package script. Added JSON output to CLI.

Change-Id: If4f2c774d3fc2d68c0a8e91b3084b99d7c75d927
diff --git a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
index 4da85a5..b765e70 100644
--- a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
+++ b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
@@ -16,6 +16,7 @@
 package org.onosproject.core;
 
 import java.net.URI;
+import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
@@ -35,7 +36,7 @@
     private final String origin;
     private final Set<Permission> permissions;
     private final Optional<URI> featuresRepo;
-    private final Set<String> features;
+    private final List<String> features;
 
     /**
      * Creates a new application descriptor using the supplied data.
@@ -51,7 +52,7 @@
     public DefaultApplication(ApplicationId appId, Version version,
                               String description, String origin,
                               Set<Permission> permissions,
-                              Optional<URI> featuresRepo, Set<String> features) {
+                              Optional<URI> featuresRepo, List<String> features) {
         this.appId = checkNotNull(appId, "ID cannot be null");
         this.version = checkNotNull(version, "Version cannot be null");
         this.description = checkNotNull(description, "Description cannot be null");
@@ -93,7 +94,7 @@
     }
 
     @Override
-    public Set<String> features() {
+    public List<String> features() {
         return features;
     }