Rudimentarily split webcl-validator to a lib and a driver binary

The current API is basically a C++ class that implements main().

The plan is to move the command line specific stuff to the driver binary
and leave the validator guts in the library, behind the public library
API. But that's gonna require some heavy refactoring.
Generate {general,kernel}.h in the build dir, not source dir

This keeps the source tree clean and also avoids them being regenerated
and consecutively the whole validator being rebuilt on every build.
Read input file in driver, pass contents to lib
Omit command name, input file name from arguments passed to the lib

They obviously don't exist in the proposed library API either
lib: Support altering the set of OpenCL extensions the preprocessor allows
Put validated source to in-memory buffer in lib, print in driver
WebCLAnalyser: Add const versions of the collected data getters
Added some pictures for desing document.
WebCLPass.cpp: Reindent source

It was a mixture of tabs and spaces, which would've probably caused some
rather obscure diffs down the road
Move imageSafetyHandler pass to be the first one

Thus, we can move some image safety checks from WebCLHeader (called from
kernelHandler) to imageSafetyHandler and rely on them being done already

The tests pass so this seems to be OK otherwise
error on illegal image2d_t access qualifiers in ImageSafetyHandler

Thus don't have to do it when printing JSON header
Move Header::emitArrayParameter address space check to KernelHandler

And just depend on it being done already in WebCLHeader
Add check for using unsupported types as kernel args to WebCLRestrictor

WebCLHeader errored on not being able to figure out a host type for
these, which was equivalent but more obscure.

That was the last WebCLHeader error-out, now it only handles output
after successful validation and can drop the WebCLReporter dependency.

Next issue to tackle is the WebCLTypes dependency and how it implies a
clang::CompilerInstance dependency, which we definitely don't want
outside the library.
WebCLHeader: Stop being a WebCLReporter

... but add a clang::CompilerInstance member, which we have to get rid
of next.
Start collecting rich kernel info in WebCLAnalyser, and using it

Currently the only thing collected is the kernel name. Eventually, this
allows getting all required kernel info without accessing the
clang::FunctionDecl directly, e.g. outside the lib.
Collect rich info for kernel args, starting with names
Make cfg::getNameOfSizeParameter take just the name

It doesn't require anything else from the Clang param decl; this allows
us to drop two more uses of clang internals from WebCLHeader
Collect (cleaned up) kernel arg type names in WebCLAnalyser
Collect pointer kernel arg address space info in WebCLAnalyser
Collect image kernel arg access qualifier info in WebCLAnalyser