Refactor Forced Import

 * Find and replace all workloads associated with imported IO
 * Only attempt tensorhandle replacement if supported by all workloads
 * Add new RefBaseWorkload to enable forced input for ref backend
 * Store imported tensorhandles in preImportedTensorhandles instead of outputHandles
 * Create pre-imported tensorhandles at network load-time
 * Front load import workload validation to load network time
 * Only call ReplaceTensorHandle when needed

Change-Id: I3816a71b7f57ae90388bb16462a75d4ef3544fa7
Signed-off-by: Finn Williams <finn.williams@arm.com>
diff --git a/include/armnn/backends/IWorkload.hpp b/include/armnn/backends/IWorkload.hpp
index d63e0ac..ce3914b 100644
--- a/include/armnn/backends/IWorkload.hpp
+++ b/include/armnn/backends/IWorkload.hpp
@@ -31,6 +31,10 @@
 
     virtual profiling::ProfilingGuid GetGuid() const = 0;
 
+    // SupportsTensorHandleReplacement signals that a given workload is capable of
+    // replacing any of its I/O tensors via ReplaceInput/OutputTensorHandle
+    virtual bool SupportsTensorHandleReplacement() const = 0;
+
     // Replace input tensor handle with the given TensorHandle
     virtual void ReplaceInputTensorHandle(ITensorHandle* /*input*/, unsigned int /*slot*/) = 0;