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

        Make our built-in kernel argument parser more robust
        Issue #336

        Reviewed by Igor.

        Create a new simple argument list parser class: WebCLKernelArgInfoProvider.

        It uses the previous kernel argument list parser logic, but modularizes
        its steps better. It also now backs the newly added WebCLKernelArgInfo class.
        Additionally, it supports extracting both address and access qualifiers, as
        well as type and names.

        It supports "kernel" and "__kernel" declarations (fixes our Layout Tests!).

        Some TODOs:
        1) define if __XXX or XXX should be returned when xxx() is called:
        See http://www.khronos.org/bugzilla/show_bug.cgi?id=1079
        2) Check the if "kernel" is not a substring, like "akernel" or "__kernel_".
        3) Add support for "[]" array like parameters.

        For free, patch also removes the unused WebCLKernel::setDevice method.

        * Modules/webcl/WebCLKernel.cpp:
        (WebCore::isASCIILineBreakOrStarCharacter):
        (WebCore::WebCLKernelArgInfoProvider::WebCLKernelArgInfoProvider):
        (WebCore::WebCLKernelArgInfoProvider::argumentsInfo):
        (WebCore::WebCLKernelArgInfoProvider::ensureInfo):
        (WebCore::WebCLKernelArgInfoProvider::parseAndAppendDeclaration):
        (WebCore::WebCLKernelArgInfoProvider::extractAddressQualifier):
        (WebCore::WebCLKernelArgInfoProvider::extractAccessQualifier):
        (WebCore::WebCLKernelArgInfoProvider::extractName):
        (WebCore::WebCLKernelArgInfoProvider::extractType):
        (WebCore::WebCLKernel::WebCLKernel):
        (WebCore::WebCLKernel::setArg):
        (WebCore::WebCLKernel::program):
        (WebCore::WebCLKernel::kernelName):
        (WebCore::WebCLKernel::numberOfArguments):
        * Modules/webcl/WebCLKernel.h:
        (WebCore::WebCLKernelArgInfo::WebCLKernelArgInfo):
        (WebCore::WebCLKernelArgInfo::name):
        (WebCore::WebCLKernelArgInfo::typeName):
        (WebCore::WebCLKernelArgInfo::addressQualifier):
        (WebCore::WebCLKernelArgInfo::accessQualifier):
        * Modules/webcl/WebCLObject.h:
        (WebCore::WebCLObjectImpl::~WebCLObjectImpl):