PEL: Interface to collect system data

There are PEL fields that contain information that must be obtained from
various places throughout the BMC, such as the machine type/model/SN
from VPD, a few types of codes levels, etc.

Create a DataInterface class that will provide the APIs for collecting
this information.  It has an abstract base class so that its functions
can be mocked to return specific data in test cases.

This commit provides APIs to read and present the machine type-model and
machine serial number.  These will be used in the FailingMTM and
ExtendedUserHeader PEL sections.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Iec41fea8d9510ba711475154f019bd59f0028d2e
diff --git a/extensions/openpower-pels/entry_points.cpp b/extensions/openpower-pels/entry_points.cpp
index 5adeb40..59a93c1 100644
--- a/extensions/openpower-pels/entry_points.cpp
+++ b/extensions/openpower-pels/entry_points.cpp
@@ -1,3 +1,4 @@
+#include "data_interface.hpp"
 #include "elog_entry.hpp"
 #include "extensions.hpp"
 #include "manager.hpp"
@@ -15,7 +16,10 @@
 
 void pelStartup(internal::Manager& logManager)
 {
-    manager = std::make_unique<Manager>(logManager);
+    std::unique_ptr<DataInterfaceBase> dataIface =
+        std::make_unique<DataInterface>(logManager.getBus());
+
+    manager = std::make_unique<Manager>(logManager, std::move(dataIface));
 }
 
 REGISTER_EXTENSION_FUNCTION(pelStartup);