Add createForGPGPU function to generate the LLVM IR
Fix bug: move up isl_ast_expr_free(StmtExpr)

Include the free statement for if and if-not GPU_CODEGEN defined
Add #ifdef GPU_CODEGEN guard to changes of NodeBuilder
Fix a typo and update format
Add setGPUKernel function to set the current kernel
Add function addKernelSynchronizaton

By using this function we can add synchronization statement to kernel function.
Add createKernelDomain, createKernelCopy and createKernelSync
Get the current llvm::Value of grid ids and block ids
Remove setGPUKernel function.

Add a struct ppcg_kernel * parameter directly to startGeneraion method.
Set correct Value for GPU ids before we call createUser

Fill in the IDTOValue with Values of block ids and thread ids and their
corresponding isl_ids.
Update format
Rename functions

Remname
 - getCUDABlockWidth to getCUDABlockDimX
 - getCUDABlockWidth to getCUDABlockDimY
 - getCUDAGridWidth to getCUDAGridDimX
 - getCUDAGridWidth to getCUDAGridDimY
Add function getCUDABlockDimZ

Get the cuda block size of Z-Dimension.
Set the kernel launching parameters.
Rename ppcg_scop_from_pet_scop to ppcg_scop_from_polly_scop
Fix bug: remove isl_ast_node_copy
Erase llvm.ptx.read.tid.z and llvm.ptx.read.ntid.z function declaration
Fix bug in getGridSize function

Avoid use isl object in Kernel directly. Instead, use their copies.
Add missing {} to case statement
Use malloced array rather than SmallVector to store isl_ids