Convert ComponentManager into an interface and create a mock

This will help to mock out ComponentManager's functionality for unit
tests in the future.

Change-Id: Ie74c49c6b31b00b0c4d38bf0db715a62a9532bc7
Reviewed-on: https://weave-review.googlesource.com/1785
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/src/device_manager.cc b/src/device_manager.cc
index 64a8093..a44f0db 100644
--- a/src/device_manager.cc
+++ b/src/device_manager.cc
@@ -10,7 +10,7 @@
 
 #include "src/base_api_handler.h"
 #include "src/commands/command_manager.h"
-#include "src/component_manager.h"
+#include "src/component_manager_impl.h"
 #include "src/config.h"
 #include "src/device_registration_info.h"
 #include "src/privet/privet_manager.h"
@@ -34,7 +34,7 @@
                              provider::HttpServer* http_server,
                              provider::Wifi* wifi,
                              provider::Bluetooth* bluetooth) {
-  component_manager_.reset(new ComponentManager);
+  component_manager_.reset(new ComponentManagerImpl);
   command_manager_ = std::make_shared<CommandManager>();
   state_change_queue_.reset(new StateChangeQueue(kMaxStateChangeQueueSize));
   state_manager_ = std::make_shared<StateManager>(state_change_queue_.get());