fixed leaks on OpenCL resources	

The problem was that in the OpenCLWrapper objects the underlying
object was always retained. That meant that when creating an object
and passing the result to the wrapper, the underlying object ended
with 2 references instead of one. The destructor was only releasing
one reference, so leaks where happening.

init for OpenCLWrapper now has a keyword retain that defaults to True.
If called with False the underlying object will not be retained, so
it effectively “steals” the reference. This is useful with the idiom:
WrapperObject(clCreateObject(…), False)
Merge remote-tracking branch 'origin/ocl-driver' into ocl-driver