COMPMID-1478: Stop relying on static default OpenCL objects in cl2.hpp

This causes problems when ACL is used as a shared library on Android.
Fixes some problems related to creation / destruction order between the Graph's CL backend and core / runtime

Change-Id: I716d63fd42f4586df1ffbb6fa97e4db06d3a781b
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/143228
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele DiGiorgio <michele.digiorgio@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
diff --git a/arm_compute/graph/IDeviceBackend.h b/arm_compute/graph/IDeviceBackend.h
index f28cb1a..358d26a 100644
--- a/arm_compute/graph/IDeviceBackend.h
+++ b/arm_compute/graph/IDeviceBackend.h
@@ -53,9 +53,14 @@
     virtual void initialize_backend() = 0;
     /** Setups the given graph context
      *
-     * @param[in] ctx Graph context
+     * @param[in,out] ctx Graph context
      */
     virtual void setup_backend_context(GraphContext &ctx) = 0;
+    /** Release the backend specific resources associated to a given graph context
+     *
+     * @param[in,out] ctx Graph context
+     */
+    virtual void release_backend_context(GraphContext &ctx) = 0;
     /** Checks if an instantiated backend is actually supported
      *
      * @return True if the backend is supported else false