Implement Logging.Create interface

This adds the xyz.openbmc_project.Logging.Create interface on the
/xyz/openbmc_project/logging path.  The interface provides a single
method, Create, that allows one to create an event log.

This is an alternative to using the report/commit functions provided by
the phosphor-logging/elog.hpp header file.

Unlike those report/commit interfaces, this does not require that the
entries in the AdditionalData event log property be defined ahead of
time, as the whole AdditionalData contents are just passed in instead of
read out of the journal.  This means that the error does not need to
have been defined in the error and metadata YAML files for an event log
to be successfully created.  The discussion on if that is still desired
anyway is outside the scope of this commit.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Icf3f740ab86605deeaeb955ff51aa2ef292f5af4
diff --git a/elog_meta.hpp b/elog_meta.hpp
index fe14a11..6783a32 100644
--- a/elog_meta.hpp
+++ b/elog_meta.hpp
@@ -46,6 +46,23 @@
     }
 };
 
+/** @brief Combine the metadata keys and values from the map
+ *         into a vector of strings that look like:
+ *            "<metadata name>=<metadata value>"
+ *  @param [in] data - metadata key:value map
+ *  @param [out] metadata - vector of "key=value" strings
+ */
+inline void combine(const std::map<std::string, std::string>& data,
+                    std::vector<std::string>& metadata)
+{
+    for (const auto& [key, value] : data)
+    {
+        std::string line{key};
+        line += "=" + value;
+        metadata.push_back(std::move(line));
+    }
+}
+
 /** @brief Build error associations specific to metadata. Specialize this
  *         template for handling a specific type of metadata.
  *  @tparam M - type of metadata