Protect against exceptions thrown in application's packet processors.

These exceptions should not bubble up to netty because that will result in the
connection to the switch being closed.

For now we catch and log the exception - in the future we could consider removing
misbehaving packet processors.

Addresses ONOS-3368.

Ported from master branch.

Change-Id: I810e697a29f387dbff8e6f353c862d30930d2825
diff --git a/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java b/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java
index 75239fd..6dc3277 100644
--- a/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java
+++ b/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java
@@ -107,7 +107,7 @@
     @Activate
     public void activate() {
         eventHandlingExecutor = Executors.newSingleThreadExecutor(
-                        groupedThreads("onos/net/packet", "event-handler"));
+                groupedThreads("onos/net/packet", "event-handler"));
         appId = coreService.getAppId(CoreService.CORE_APP_NAME);
         store.setDelegate(delegate);
         deviceService.addListener(deviceListener);
@@ -281,7 +281,11 @@
         public void processPacket(PacketContext context) {
             // TODO filter packets sent to processors based on registrations
             for (PacketProcessor processor : processors.values()) {
-                processor.process(context);
+                try {
+                    processor.process(context);
+                } catch (Exception e) {
+                    log.warn("Packet processor {} threw an exception", processor, e);
+                }
             }
         }