[AETHER-72] Refactoring RouteService

- to use bulk updates interface
- to use new getRoutesForNextHops API
- to use multi-thread resolver
- to use multi-thread hostexec
- to use a concurrent hashmap instead of synchronized
- to use a non-blocking resolved store

Additionally updates unit tests

Change-Id: Id960abd0f2a1b03066ce34b6a2f72b76566bb58c
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java
index 725a7a9..51ef8c7 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/impl/DefaultResolvedRouteStore.java
@@ -17,7 +17,6 @@
 package org.onosproject.routeservice.impl;
 
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
 import com.googlecode.concurrenttrees.common.KeyValuePair;
 import com.googlecode.concurrenttrees.radix.node.concrete.DefaultByteArrayNodeFactory;
 import com.googlecode.concurrenttrees.radixinverted.ConcurrentInvertedRadixTree;
@@ -121,7 +120,7 @@
             routeTable = new ConcurrentInvertedRadixTree<>(
                     new DefaultByteArrayNodeFactory());
 
-            alternativeRoutes = Maps.newHashMap();
+            alternativeRoutes = new ConcurrentHashMap<>();
         }
 
         /**
@@ -133,7 +132,6 @@
         public RouteEvent update(ResolvedRoute route, Set<ResolvedRoute> alternatives) {
             Set<ResolvedRoute> immutableAlternatives = checkAlternatives(route, alternatives);
 
-            synchronized (this) {
                 ResolvedRoute oldRoute = routeTable.put(createBinaryString(route.prefix()), route);
                 Set<ResolvedRoute> oldRoutes = alternativeRoutes.put(route.prefix(), immutableAlternatives);
 
@@ -153,7 +151,6 @@
                 }
 
                 return null;
-            }
         }
 
         /**
@@ -181,18 +178,16 @@
          * @param prefix prefix to remove
          */
         public RouteEvent remove(IpPrefix prefix) {
-            synchronized (this) {
-                String key = createBinaryString(prefix);
+            String key = createBinaryString(prefix);
 
-                ResolvedRoute route = routeTable.getValueForExactKey(key);
-                Set<ResolvedRoute> alternatives = alternativeRoutes.remove(prefix);
+            ResolvedRoute route = routeTable.getValueForExactKey(key);
+            Set<ResolvedRoute> alternatives = alternativeRoutes.remove(prefix);
 
-                if (route != null) {
-                    routeTable.remove(key);
-                    return new RouteEvent(RouteEvent.Type.ROUTE_REMOVED, route, alternatives);
-                }
-                return null;
+            if (route != null) {
+                routeTable.remove(key);
+                return new RouteEvent(RouteEvent.Type.ROUTE_REMOVED, route, alternatives);
             }
+            return null;
         }
 
         /**