IVGCVSW-4007 Add StandInLayer for unsupported operations in TfLiteParser

* Fixed bug in custom operator support that caused all custom operators
  to be parsed as a DetectionPostProcessLayer
* Added support for handling unsupported operators (built-in or custom)
  by replacing them with a StandInLayer in the generated network
* Added options to TfLiteParser to control whether we want to use
  StandInLayers when we encounter unsupported operators, or we prefer
  to throw a ParserException as until now

Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: I125a63016c7c510b1fdde6033842db4f276718c4
diff --git a/include/armnnTfLiteParser/ITfLiteParser.hpp b/include/armnnTfLiteParser/ITfLiteParser.hpp
index 36b9246..de1eae7 100644
--- a/include/armnnTfLiteParser/ITfLiteParser.hpp
+++ b/include/armnnTfLiteParser/ITfLiteParser.hpp
@@ -8,6 +8,7 @@
 #include "armnn/NetworkFwd.hpp"
 #include "armnn/Tensor.hpp"
 #include "armnn/INetwork.hpp"
+#include "armnn/Optional.hpp"
 
 #include <memory>
 #include <map>
@@ -24,8 +25,16 @@
 class ITfLiteParser
 {
 public:
-    static ITfLiteParser* CreateRaw();
-    static ITfLiteParserPtr Create();
+    struct TfLiteParserOptions
+    {
+        TfLiteParserOptions()
+            : m_StandInLayerForUnsupported(false) {}
+
+        bool m_StandInLayerForUnsupported;
+    };
+
+    static ITfLiteParser* CreateRaw(const armnn::Optional<TfLiteParserOptions>& options = armnn::EmptyOptional());
+    static ITfLiteParserPtr Create(const armnn::Optional<TfLiteParserOptions>& options = armnn::EmptyOptional());
     static void Destroy(ITfLiteParser* parser);
 
     /// Create the network from a flatbuffers binary file on disk