IVGCVSW-1952 : add BackendId class to prepare for the replacement of Compute enum

!armnn:152674

Change-Id: I1bcdfdfbfb73e502d58f35717e2558e24651013c
diff --git a/src/backends/BackendRegistry.hpp b/src/backends/BackendRegistry.hpp
index ff01d21..e2c526d 100644
--- a/src/backends/BackendRegistry.hpp
+++ b/src/backends/BackendRegistry.hpp
@@ -5,7 +5,6 @@
 #pragma once
 
 #include <armnn/Types.hpp>
-#include <string>
 #include <functional>
 #include <memory>
 #include <unordered_map>
@@ -21,21 +20,23 @@
     using FactoryFunction = std::function<IBackendUniquePtr()>;
 
     static BackendRegistry& Instance();
-    void Register(const std::string& name, FactoryFunction factory);
-    FactoryFunction GetFactory(const std::string& name) const;
+
+    void Register(const BackendId& id, FactoryFunction factory);
+    FactoryFunction GetFactory(const BackendId& id) const;
 
     struct Helper
     {
-        Helper(const std::string& name, FactoryFunction factory)
+        Helper(const BackendId& id, FactoryFunction factory)
         {
-            BackendRegistry::Instance().Register(name, factory);
+            BackendRegistry::Instance().Register(id, factory);
         }
     };
 
     size_t Size() const { return m_BackendFactories.size(); }
+    BackendIdSet GetBackendIds() const;
 
 protected:
-    using FactoryStorage = std::unordered_map<std::string, FactoryFunction>;
+    using FactoryStorage = std::unordered_map<BackendId, FactoryFunction>;
 
     // For testing only
     static void Swap(FactoryStorage& other);