Many fixes to make code to compile with Visual Studio

Mostly changed:
* #if not defined VAR1 or defined VAR2 => #if ! defined VAR1 || defined VAR2
* Explicit casts from void* to explicit pointer type
* Changed void* + offset to have cast char* to be able to add offset to pointer
* Added many function which just does not exist in Visual Studio with the same name
* Changed dynamic array allocations to be done e.g. with malloc
* Wrote cmake scripts to convert llvm-config library listings to windows compatible lists
* Changed cl_vectortype .x .y .z .w .s1 .s2 etc. to .s[0..16] which is only required accessor (windows khronos headers implement only .s[])