VOL-2970 - Improved readability & traceability of startup code.

Changed Start() function to implement majority of the startup functionality, with less helpers.  Start() also defines local variables for each component created, to avoid accidentally using a component that isn't ready.
Also merged the rwCore into the Core.
Also changed Core to cancel a local context to on shutdown, and then wait for shutdown to complete.

Change-Id: I285e8486773476531e20ec352ff85a1b145432bf
diff --git a/rw_core/core/api/grpc_nbi_handler_test.go b/rw_core/core/api/grpc_nbi_handler_test.go
index e8b651d..592ccea 100755
--- a/rw_core/core/api/grpc_nbi_handler_test.go
+++ b/rw_core/core/api/grpc_nbi_handler_test.go
@@ -127,16 +127,12 @@
 	proxy := model.NewProxy(backend, "/")
 	nb.adapterMgr = adapter.NewAdapterManager(proxy, nb.coreInstanceID, nb.kClient)
 	nb.deviceMgr, nb.logicalDeviceMgr = device.NewManagers(proxy, nb.adapterMgr, nb.kmp, endpointMgr, cfg.CorePairTopic, nb.coreInstanceID, cfg.DefaultCoreTimeout)
-	if err = nb.adapterMgr.Start(ctx); err != nil {
-		logger.Fatalf("Cannot start adapterMgr: %s", err)
-	}
-	nb.deviceMgr.Start(ctx)
-	nb.logicalDeviceMgr.Start(ctx)
+	nb.adapterMgr.Start(ctx)
 
-	if err = nb.kmp.Start(); err != nil {
+	if err := nb.kmp.Start(); err != nil {
 		logger.Fatalf("Cannot start InterContainerProxy: %s", err)
 	}
-	requestProxy := NewAdapterRequestHandlerProxy(nb.coreInstanceID, nb.deviceMgr, nb.adapterMgr, proxy, proxy, cfg.LongRunningRequestTimeout, cfg.DefaultRequestTimeout)
+	requestProxy := NewAdapterRequestHandlerProxy(nb.deviceMgr, nb.adapterMgr)
 	if err := nb.kmp.SubscribeWithRequestHandlerInterface(kafka.Topic{Name: cfg.CoreTopic}, requestProxy); err != nil {
 		logger.Fatalf("Cannot add request handler: %s", err)
 	}
@@ -201,12 +197,6 @@
 	if nb.kClient != nil {
 		nb.kClient.Stop()
 	}
-	if nb.logicalDeviceMgr != nil {
-		nb.logicalDeviceMgr.Stop(context.Background())
-	}
-	if nb.deviceMgr != nil {
-		nb.deviceMgr.Stop(context.Background())
-	}
 	if nb.kmp != nil {
 		nb.kmp.Stop()
 	}