Add IslPTXGenerator

IslPTXGenerator is used to generate llvm IR for both the host and
device.
Add struct gen_ext

This struct will be used to transmit all the output of the ppcg generated
isl* structures.
 - guard: guard of the host code.
 - tree: host code ast_node.
 - prog: gpu_prog struct.
Update generate_gpu to use gen_ext

So we can use gen_ext to output the generated ast_node and gpu_prog.
Add two flags for GPGPU codegen(isl)

 - enable-polly-gpgpu-isl: enable polly GPGPU codegen.
 - polly-gpgpu-triple-isl: set the GPU triple string.
Add dump_ast_node debug option
Add print_ast_node_as_c_format function
Add an IslPTXGenerator member to isl NodeBuilder
Trigger the gpgpu codegen in IslCodeGeneration::runOnScop
Fix bug: should collct array and scopstmt info before access
Combine may_write, tagged_may_write with must_write and tagged_must_write

In ppcg, may_write means all the writes (polly may_writes + must_writes).
Update comment
Comment unused variable declaration
Set the same access ref_id to gpu_stmt and MemoryAccess
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