replace tuple-based singleton with individual singletons

The tuple-based singletons did not actually enforce singleton behavior
and the requirement of the accessor mechanism to include all of the
member types at once was starting to cause a header prerequisite
tangle. This removes the cross-dependencies and enforces actual
singletons by making a single way to access the class.

Tested: Run ipmitool to show that behavior has not changed

Change-Id: Ie966e1142363d279365b1095066380c8383e9f9b
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
diff --git a/main.hpp b/main.hpp
index 7c78554..fa7584b 100644
--- a/main.hpp
+++ b/main.hpp
@@ -1,18 +1,9 @@
 #pragma once
 
-#include "command/guid.hpp"
-#include "sd_event_loop.hpp"
-#include "sol/sol_manager.hpp"
-
-#include <command_table.hpp>
+#include <boost/asio/io_context.hpp>
 #include <cstddef>
+#include <memory>
 #include <sdbusplus/asio/connection.hpp>
-#include <sessions_manager.hpp>
-#include <tuple>
-
-extern std::tuple<session::Manager&, command::Table&, eventloop::EventLoop&,
-                  sol::Manager&>
-    singletonPool;
 
 // Select call timeout is set arbitrarily set to 30 sec
 static constexpr size_t SELECT_CALL_TIMEOUT = 30;
@@ -21,3 +12,4 @@
 extern sd_bus* bus;
 
 std::shared_ptr<sdbusplus::asio::connection> getSdBus();
+std::shared_ptr<boost::asio::io_context> getIo();