Added PersistentJsonStorageClass

PersistentJsonStorage is used to store persistent information in
json format. This class will be used by ReportManager to save
persistent report configuration.

Tested:
  - Added unit tests for new functionality
  - All other unit tests are passing

Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
Change-Id: Ib496e6782e849d910fe37c02c355047afda5c79c
diff --git a/meson.build b/meson.build
index c6ef6ea..f373ef7 100644
--- a/meson.build
+++ b/meson.build
@@ -49,15 +49,29 @@
 
 systemd = dependency('systemd')
 
+if cpp.has_header('nlohmann/json.hpp')
+    nlohmann_json = declare_dependency()
+else
+    subproject('nlohmann', required: false)
+    nlohmann_json = declare_dependency(
+        include_directories: [
+            'subprojects/nlohmann/single_include',
+            'subprojects/nlohmann/single_include/nlohmann',
+        ]
+    )
+endif
+
 executable(
     'telemetry',
     [
         'src/main.cpp',
         'src/report.cpp',
         'src/report_manager.cpp',
+        'src/persistent_json_storage.cpp',
     ],
     dependencies: [
         boost,
+        nlohmann_json,
         sdbusplus,
         phosphor_logging,
     ],
@@ -76,3 +90,7 @@
     install: true,
     install_dir: systemd.get_pkgconfig_variable('systemdsystemunitdir'),
 )
+
+if get_option('buildtest')
+    subdir('tests')
+endif