COMPMID-1088: Use IMemoryRegion in interfaces where possible

-Simplifies import memory interface
-Changes the used of void** handles with appropriate interfaces.

Change-Id: I5918c855c11f46352058864623336b352162a4b7
diff --git a/src/runtime/Memory.cpp b/src/runtime/Memory.cpp
index 15bbb17..d116624 100644
--- a/src/runtime/Memory.cpp
+++ b/src/runtime/Memory.cpp
@@ -30,17 +30,13 @@
 Memory::Memory()
     : _region(nullptr), _region_owned(nullptr)
 {
-    create_empty_region();
 }
 
 Memory::Memory(std::shared_ptr<IMemoryRegion> memory)
     : _region(nullptr), _region_owned(std::move(memory))
 {
-    if(_region_owned == nullptr)
-    {
-        create_empty_region();
-    }
-    _region = _region_owned.get();
+    _region_owned = memory;
+    _region       = _region_owned.get();
 }
 
 Memory::Memory(IMemoryRegion *memory)
@@ -59,9 +55,15 @@
     return _region;
 }
 
-void Memory::create_empty_region()
+void Memory::set_region(IMemoryRegion *region)
 {
-    _region_owned = std::make_shared<MemoryRegion>(0);
+    _region_owned = nullptr;
+    _region       = region;
+}
+
+void Memory::set_owned_region(std::unique_ptr<IMemoryRegion> region)
+{
+    _region_owned = std::move(region);
     _region       = _region_owned.get();
 }
 } // namespace arm_compute