IVGCVSW-3307 Introduce RefTensorHandle

Use it for intermediate tensors on reference backend.
Lays the groundwork for memory management in the reference backend.

Change-Id: I7d3ee132cac31bde70ae6e1b815f4f0b03d550a6
Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
diff --git a/src/backends/reference/workloads/RefTransposeConvolution2dWorkload.cpp b/src/backends/reference/workloads/RefTransposeConvolution2dWorkload.cpp
index 50dafca..ec60030 100644
--- a/src/backends/reference/workloads/RefTransposeConvolution2dWorkload.cpp
+++ b/src/backends/reference/workloads/RefTransposeConvolution2dWorkload.cpp
@@ -19,7 +19,7 @@
 {
     // set up weights decoder
     m_Weights = std::make_unique<ScopedCpuTensorHandle>(*(descriptor.m_Weight));
-    const TensorInfo& weightsInfo = GetTensorInfo(m_Weights.get());
+    const TensorInfo& weightsInfo = m_Weights->GetTensorInfo();
 
     m_WeightsDecoder = MakeDecoder<float>(weightsInfo, m_Weights.get()->Map(true));
     m_WeightsShape   = weightsInfo.GetShape();
@@ -28,7 +28,7 @@
     if (descriptor.m_Parameters.m_BiasEnabled)
     {
         m_Biases = std::make_unique<ScopedCpuTensorHandle>(*(descriptor.m_Bias));
-        const TensorInfo& biasesInfo = GetTensorInfo(m_Biases.get());
+        const TensorInfo& biasesInfo = m_Biases->GetTensorInfo();
         m_BiasesDecoder = MakeDecoder<float>(biasesInfo, m_Biases.get()->Map(true));
     }
 }