Memory management for all three backends

- Fixes #8 
@pavanky :+1:  I see that the `Array<T>::get` changed for OpenCL backend w.r.t return type, we need to inform who are aware and using the old `Array<T>::get` to avoid merge based compile errors in the code.