Updated SDN-IP to use the Intent framework batch-based intents.

Also, created a local cache of IPv4-to-MAC address mapping,
to avoid relatively costly hostService.getHostsByIp() calls
per added route.

Change-Id: I8abed378985708e883fd99e85c54b01f38756515
diff --git a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/SdnIpTest.java b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/SdnIpTest.java
index ab26766..4dfe3cc 100644
--- a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/SdnIpTest.java
+++ b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/SdnIpTest.java
@@ -236,9 +236,7 @@
         TestUtils.setField(intentSynchronizer, "isActivatedLeader", true);
 
         // Add route updates
-        for (RouteUpdate update : routeUpdates) {
-            router.processRouteAdd(update.routeEntry());
-        }
+        router.processRouteUpdates(routeUpdates);
 
         latch.await(5000, TimeUnit.MILLISECONDS);
 
@@ -304,17 +302,19 @@
         TestUtils.setField(intentSynchronizer, "isActivatedLeader", true);
 
         // Send the add updates first
-        for (RouteUpdate update : routeUpdates) {
-            router.processRouteAdd(update.routeEntry());
-        }
+        router.processRouteUpdates(routeUpdates);
 
         // Give some time to let the intents be submitted
         installCount.await(5000, TimeUnit.MILLISECONDS);
 
         // Send the DELETE updates
+        List<RouteUpdate> deleteRouteUpdates = new ArrayList<>();
         for (RouteUpdate update : routeUpdates) {
-            router.processRouteDelete(update.routeEntry());
+            RouteUpdate deleteUpdate = new RouteUpdate(RouteUpdate.Type.DELETE,
+                                                       update.routeEntry());
+            deleteRouteUpdates.add(deleteUpdate);
         }
+        router.processRouteUpdates(deleteRouteUpdates);
 
         deleteCount.await(5000, TimeUnit.MILLISECONDS);