2013-12-02  Antonio Gomes  <a1.gomes@sisa.samsung.com>

        Make WebCL objects be released explicitly using the method release()
        Issue #229

        Reviewed by NOBODY (OOPS!).

        Implemented the 'release' method for Context, MemoryObject,
        CommandQueue, Program, Kernel and Sampler classes. Event
        is not supported because it needs issue #321 to be fixed.

        releaseAll is also implemented for Context but not for WebCL global yet.
        For this a parent WebCLAgnosticObject was added. WebCLObject now inherits
        from it.

        WebCLContext stores its descendants in a Vector<WeakPtr<WebCLAgnosticObject>>.
        Elements can be null-checked.

        * Modules/webcl/WebCLCommandQueue.cpp:
        (WebCore::WebCLCommandQueue::WebCLCommandQueue):
        * Modules/webcl/WebCLCommandQueue.idl:
        * Modules/webcl/WebCLContext.cpp:
        (WebCore::WebCLContext::createCommandQueue):
        (WebCore::WebCLContext::createImage2DBase):
        (WebCore::WebCLContext::createUserEvent):
        (WebCore::WebCLContext::getSupportedImageFormats):
        (WebCore::WebCLContext::trackReleaseableWebCLObject):
        (WebCore::WebCLContext::releaseAll):
        * Modules/webcl/WebCLContext.h:
        * Modules/webcl/WebCLContext.idl:
        * Modules/webcl/WebCLEvent.idl:
        * Modules/webcl/WebCLKernel.cpp:
        (WebCore::WebCLKernel::WebCLKernel):
        * Modules/webcl/WebCLKernel.idl:
        * Modules/webcl/WebCLMemoryObject.cpp:
        (WebCore::WebCLMemoryObject::WebCLMemoryObject):
        * Modules/webcl/WebCLMemoryObject.idl:
        * Modules/webcl/WebCLObject.h:
        (WebCore::WebCLAgnosticObject::~WebCLAgnosticObject):
        (WebCore::WebCLAgnosticObject::isReleased):
        (WebCore::WebCLAgnosticObject::release):
        (WebCore::WebCLAgnosticObject::createWeakPtr):
        (WebCore::WebCLAgnosticObject::WebCLAgnosticObject):
        (WebCore::WebCLObject::release):
        (WebCore::WebCLObject::releasePlatformObject):
        (WebCore::WebCLObject::WebCLObject):
        * Modules/webcl/WebCLProgram.cpp:
        (WebCore::WebCLProgram::WebCLProgram):
        * Modules/webcl/WebCLProgram.h:
        * Modules/webcl/WebCLSampler.cpp:
        (WebCore::WebCLSampler::WebCLSampler):
        * Modules/webcl/WebCLSampler.idl: