Enable Cereal class versioning

Cereal class versioning helps to handle data de-serialization
across different class versions that differ in the way, a particular
data is serialized.

For more reading, refer Cereal official documentation;
http://uscilab.github.io/cereal/serialization_functions.html

Change-Id: Ic5d01090b7a7679ef2bf638da786abbd033007bc
Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index 35a4bdd..6b5e97e 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -4,6 +4,7 @@
 #include <functional>
 #include <experimental/filesystem>
 #include <cereal/access.hpp>
+#include <cereal/cereal.hpp>
 #include <sdbusplus/bus.hpp>
 #include <phosphor-logging/log.hpp>
 #include <xyz/openbmc_project/State/Boot/Progress/server.hpp>
@@ -184,9 +185,11 @@
          *
          *  @tparam Archive - Cereal archive type (binary in our case).
          *  @param[in] archive - reference to Cereal archive.
+         *  @param[in] version - Class version that enables handling
+         *                       a serialized data across code levels
          */
         template<class Archive>
-        void save(Archive& archive) const
+        void save(Archive& archive, const std::uint32_t version) const
         {
             archive(convertForMessage(sdbusplus::xyz::openbmc_project::
                                       State::server::Host::
@@ -203,9 +206,11 @@
          *
          *  @tparam Archive - Cereal archive type (binary in our case).
          *  @param[in] archive - reference to Cereal archive.
+         *  @param[in] version - Class version that enables handling
+         *                       a serialized data across code levels
          */
         template<class Archive>
-        void load(Archive& archive)
+        void load(Archive& archive, const std::uint32_t version)
         {
             std::string reqTranState;
             std::string bootProgress;