IVGCVSW-5280 Switch tests/InferenceTest and derived tests over to cxxopts

* refactor AddCommandLineOptions() functions to allow checking of required options
* add CxxoptsUtils.hpp file for convenience functions
!referencetests:268500

Signed-off-by: James Ward <james.ward@arm.com>
Change-Id: Ica954b210b2981b7cd10995f0d75fcb2a2f7b443
diff --git a/tests/MobileNetSsdInferenceTest.hpp b/tests/MobileNetSsdInferenceTest.hpp
index 2a5d47d..7377640 100644
--- a/tests/MobileNetSsdInferenceTest.hpp
+++ b/tests/MobileNetSsdInferenceTest.hpp
@@ -152,18 +152,19 @@
         : m_ConstructModel(constructModel)
     {}
 
-    virtual void AddCommandLineOptions(boost::program_options::options_description& options) override
+    virtual void AddCommandLineOptions(cxxopts::Options& options, std::vector<std::string>& required) override
     {
-        namespace po = boost::program_options;
+        options
+            .allow_unrecognised_options()
+            .add_options()
+                ("d,data-dir", "Path to directory containing test data", cxxopts::value<std::string>(m_DataDir));
 
-        options.add_options()
-            ("data-dir,d", po::value<std::string>(&m_DataDir)->required(),
-             "Path to directory containing test data");
+        required.emplace_back("data-dir");
 
-        Model::AddCommandLineOptions(options, m_ModelCommandLineOptions);
+        Model::AddCommandLineOptions(options, m_ModelCommandLineOptions, required);
     }
 
-    virtual bool ProcessCommandLineOptions(const InferenceTestOptions &commonOptions) override
+    virtual bool ProcessCommandLineOptions(const InferenceTestOptions& commonOptions) override
     {
         if (!ValidateDirectory(m_DataDir))
         {