[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/store/RouteTable.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/RouteTable.java
index 130654b..fddd116 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/RouteTable.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/RouteTable.java
@@ -37,6 +37,13 @@
     void update(Route route);
 
     /**
+     * Adds the routes to the route table.
+     *
+     * @param routes routes
+     */
+    void update(Collection<Route> routes);
+
+    /**
      * Removes a route from the route table.
      *
      * @param route route
@@ -44,6 +51,13 @@
     void remove(Route route);
 
     /**
+     * Removes the routes from the route table.
+     *
+     * @param routes routes
+     */
+    void remove(Collection<Route> routes);
+
+    /**
      * Replaces a route in the route table.
      *
      * @param route route
@@ -81,6 +95,14 @@
     Collection<Route> getRoutesForNextHop(IpAddress nextHop);
 
     /**
+     * Returns all routes that have the given next hops.
+     *
+     * @param nextHops next hops IP addresses
+     * @return collection of routes sets
+     */
+    Collection<RouteSet> getRoutesForNextHops(Collection<IpAddress> nextHops);
+
+    /**
      * Releases route table resources held locally.
      */
     void shutdown();