IVGCVSW-2454 Refactor ArmNN to support pluggable backends from a separate
code base

 * Made the virtual functions in ILayerSupport.hpp pure
 * Created a LayerSupportBase class with the default implementation of
   the interface
 * Made the backend layer support classes inherit from the base
   class, instead of directly from the interface
 * Refactored the profiler and the profiling event classes to use
   the BackendId instead of the Compute
 * Implemented a proper MemCopy support method
 * Changed Compute to BackendId in the profiling API and objects
 * Removed static references to pluggable backends

!android-nn-driver:492

Change-Id: Id6332b5f48c980819e0a09adc818d1effd057296
diff --git a/src/backends/cl/ClLayerSupport.hpp b/src/backends/cl/ClLayerSupport.hpp
index 80dd1c8..b06e6a9 100644
--- a/src/backends/cl/ClLayerSupport.hpp
+++ b/src/backends/cl/ClLayerSupport.hpp
@@ -4,12 +4,12 @@
 //
 #pragma once
 
-#include <armnn/ILayerSupport.hpp>
+#include <backendsCommon/LayerSupportBase.hpp>
 
 namespace armnn
 {
 
-class ClLayerSupport : public ILayerSupport
+class ClLayerSupport : public LayerSupportBase
 {
 public:
     bool IsActivationSupported(const TensorInfo& input,
@@ -122,6 +122,10 @@
                          const MeanDescriptor& descriptor,
                          Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
 
+    bool IsMemCopySupported(const TensorInfo& input,
+                            const TensorInfo& output,
+                            Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
+
     bool IsMergerSupported(const std::vector<const TensorInfo*> inputs,
                            const TensorInfo& output,
                            const OriginsDescriptor& descriptor,
@@ -161,6 +165,7 @@
                               Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
 
     bool IsReshapeSupported(const TensorInfo& input,
+                            const ReshapeDescriptor& descriptor,
                             Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const override;
 
     bool IsResizeBilinearSupported(const TensorInfo& input,