Found a few codec inconsistencies between JSON encoders and decoders

- Fix EtherType inconsistency in coding VLAN_PUSH and MPLS_POP instructions
- Fix group id inconsistency in coding a Group instruction
- Fix Group identifiers to be treated as unsigned integers in GroupCodec
- Add a JSON decoder for FlowEntry

Change-Id: Id80b9e009550e3b71b9274adb116e5179391fa66
(cherry picked from commit 494f586853c1a87ba62f20b477e211f996baded5)
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/GroupsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/GroupsResourceTest.java
index e13784d..3537c4d 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/GroupsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/GroupsResourceTest.java
@@ -276,9 +276,9 @@
         @Override
         public boolean matchesSafely(JsonObject jsonGroup) {
             // check id
-            final String jsonId = jsonGroup.get("id").asString();
+            final Long jsonId = jsonGroup.get("id").asLong();
             final String groupId = group.id().id().toString();
-            if (!jsonId.equals(groupId)) {
+            if (!jsonId.equals(Long.valueOf(groupId))) {
                 reason = "id " + group.id().id().toString();
                 return false;
             }
@@ -362,8 +362,8 @@
                 final JsonObject jsonGroup = json.get(jsonGroupIndex).asObject();
 
                 final String groupId = group.id().id().toString();
-                final String jsonGroupId = jsonGroup.get("id").asString();
-                if (jsonGroupId.equals(groupId)) {
+                final Long jsonGroupId = jsonGroup.get("id").asLong();
+                if (jsonGroupId.equals(Long.valueOf(groupId))) {
                     groupFound = true;
 
                     //  We found the correct group, check attribute values