WebCLTool: use std::vector<const char *> for passing arguments instead of const char**

The type is given name CharPtrVector.
WebCLArguments: use CharPtrVector in the interface
WebCLArguments::validatorArgv_: implemented as a CharPtrVector
WebCLArguments::preprocessorArgv_: implemented as a CharPtrVector
WebCLProcessor: added a way to retrieve the list of used extensions

The list of used extensions can only be a subset of the allowed
extensions.

The mechanism for retrieving the used extensions is that a pointer to
the return value is passed down to the WebCLPreprocessor, which then
fills in the value (if the pointer is set). This allows to pierce
through the layers (where the actual instance of WebCLPreprocessor is
not available for us) with the least fuss.

In future this could be refined to support more parameters by
replacing both "extensions" and "usedExtensions" with a more general
environment object.
Implemented a mechanism for implementing #pragma checks

It works by

1) First preprocessing the code with all supported extensions enabled
(which allows everything to pass)

2) then collecting the extensions that were actually enabled by the
user code

3) and finally proceeding as before, but with only the particular
extensions enabled (for example the relevant wrapppers and types are
now generated)
Removed debug messages
Implemented #pragma check for the 64-bit floating point extension (doubles)
Implemented #pragma check for the atomics (base and extended)

Added tests that not enabling atomics extensions prevents access to
long atomics.

Fixes also atomics-extended.cl, which didn't exercise 64-bit atomcis
before.
Implemented #pragma check for the 16-bit floating point extension (halfs)
WebCLPreprocessor::PragmaOpenCLExtension: revised error message
driver: implemented --disable=extensionname
README: tell about the switch --disable=xx
Merge pull request #97 from eras/erkkise/extensions

Support for #pragmas extension enabling