Editor implementation for VPD manager

This commit implements editor class for VPD manager app.
This calss holds responsibility of handling and editing
vpd data related requests on behalf of manager app and
updating the cache with new data if required.

This commit also changes parser class to implement api
needed to validate vpd header file in case of write call.

Steps to build:
meson <build_directory>
ninja -C <directory_path>

-Tested with sample json and sample vpd file
sample command to test
busctl call com.ibm.VPD.Manager /com/ibm/VPD/Manager
com.ibm.VPD.Manager WriteKeyword sssay
<"inventory_path"> <"Record_Name"> <"Keyword_Name">
<no. of bytes to update> <array_of_bytes>

Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com>
Change-Id: I569f03e329b0f62937c6e143a344d8e4ff02db6f
diff --git a/impl.hpp b/impl.hpp
index a6ac39d..6dca5e0 100644
--- a/impl.hpp
+++ b/impl.hpp
@@ -78,12 +78,17 @@
      */
     Store run();
 
-  private:
-    /** @brief Process the table of contents record, VHDR
-     *
-     *  @returns List of offsets to records in VPD
+    /** @brief check if VPD header is valid
      */
-    internal::OffsetList readTOC() const;
+    void checkVPDHeader();
+
+  private:
+    /** @brief Process the table of contents record
+     *
+     *  @param[in] iterator - iterator to buffer containing VPD
+     *  @returns Size of the PT keyword in VTOC
+     */
+    std::size_t readTOC(Binary::const_iterator& iterator) const;
 
     /** @brief Read the PT keyword contained in the VHDR record,
      *         to obtain offsets to other records in the VPD.