WebCLTypes: moved type query related functions from WebCLHeader

This change moves reduceType and type lists (host types, unsafe
builtin types, safe builtin types) from WebCLHeader to WebCLTypes,
which puts the data available via free functions in a WebCLTypes
namespace.

This allows the reuse of the reduceType function (and others) from
other files.
WebCLTransformer::changeFunctionCallee: Added a function for changing which function is called
WebCLTransformer.getClampMacroExpression: added a simple way to clamp an expression

Moved some code from addMemoryAccessCheck to getClampMacroExpression
and BaseIndexField. This refactoring code then easies later uses of
getClampMacroCall in generative contexts.
WebCLTypes::getAddressSpace: moved from WebCLKernelHandler
WebCLCommon: added a file for common basic types
WebCLConfiguration.dataWidths_: added an enumeration of available data widths
WebCLKernelHandler.getDerefLimits: added a way to get limits of a pointer's destination

Usually when retrieving an expression's limits we are interested in
the actual value's limits. When dealing with builtins the limits of
the value pointed by the pointer are needed. This function provides
that information.
WebCLKernelHandler.getClampMacroCall: added an argument for data size

Usually when accessing memory only the value itself is accessed. But
when implementing builtins the type of the pointer is different from
the size of the access (for example with float* the builtin still
accesses float* + 4). This change allows to easily take that into
account.
WebCLCommon: added stringify for converting mostly any value to a string
WebCLTransformer.wrapBuiltinFunction: added a transformation for making builtin functions safe

Replaces calls to supported builtin functions with a call to a
generated function that checks the arguments for valid references
before calling them.

Currently supported builtins: vload*
WebCLBuiltinHandler: added a pass that makes builtin calls safe by using WebCLTransformer::wrapBuiltinFunction
WebCLTransformer::wrapBuiltinFunction: now accepts wrapper name as a parameter

This allows for the WebCLBuiltinHandler to properly handle the problem
over overlapping symbol names. (Which it now does.)
WebCLTransformer::wrapBuiltinFunction: support vstore*
WebCLMatcher1Action::checkIdentifiers: fixed a compiler warning

Removed a warning about size_t converted implicitly to const int.
kernel: removed vloads and vstores
WebCLTransformer: VLoad is now more accurate about the offset argument

The offset argument is cast to size_t to ensure no overflows occur.
WebCLTransformer: VStore is now more accurate about the offset argument

The offset argument is cast to size_t to ensure no overflows occur.
Macro _WCL_ADDR_CHECK_* now does only checking, _WCL_ADDR_CLAMP_* does clamping

The new function WebCLConfiguration::getNameOfLimitClampMacro now
returns the name of the macro that does the clamping, previously it
was called by the name returned by
WebCLConfiguration::getNameOfLimitCheckMacro. The latter macro now
returns the name of the function that only checks the limit and
returns a boolean. Both of the macros are generated by
WebCLTransformer::getWclAddrCheckMacroDefinition.
WebCLTransformer::getClampMacroCall: make use of the size argument

The use of the size argument was probably lost while reordering
patches. Also the generating site was missing it.
WebCLTransformer::getCheckMacroCall now can generate both limit and clamp macros

Added a new first argument MACRO_CLAMP or MACRO_CHECK that determines
which of the macros to call.