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 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
Add getGridSize function in IslNodeBuilder
Rename ppcg_scop_from_pet_scop to ppcg_scop_from_polly_scop
Add missing {} to case statement
Use malloced array rather than SmallVector to store isl_ids
Implement polly_stmt_build_ast_exprs
Add GMap member to store all the base addresses in NodeBuilder
Add function getDeviceArrayBaseAddressMap
Modify BlockGenerator to generate access from isl_id_to_ast_expr

Add member variable:
 - bool GPGPU
 - IslExprBuilder *Exprbuilder
 - isl_id_to_ast_expr *Indexes
Add a Verifier pass to verify the subfunction.

To make sure that the generated bitcodes in ptx subfunction is valid.
Implement copy data from and to device