Add createKernelDomain, createKernelCopy and createKernelSync
Add getGridSize function in IslNodeBuilder
Store isl_id of grid and block ids in kernel ast_node
Modify BlockGenerator to generate access from isl_id_to_ast_expr
Get the current llvm::Value of grid ids and block ids
Update IDToValue with GPUId stored in kernel node
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.
Implement polly_stmt_build_ast_exprs
Add GMap member to store all the base addresses in NodeBuilder
Add function getDeviceArrayBaseAddressMap
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
Set original cpu base address as copyFromDevice target address.

This fixes test cases that an array is used both copy-in and copy-out,
except that it is unnecessary to be copied from cpu to gpu, e.g. the
matrix multiply case.
Set the isl_options

Fix bug that polly generates different host ast node from ppcg.
Add host iterator parameters when create kernel subfunction
Replace IDToValue with GPU Kernel local one

In createForGPGPU, we use a copy of the IDToValue. This local IDToValue
map host iterators' isl_ids to llvm::Value of Kernel function arguments.
[Refactor] Move set IDToValue for GPU ids to IslPTXGenerator

 - Remove public function getValueOfGPUID
 - Remove member varialbe BIDx, BIDy, TIDx, TIDy, TIDz and use them as
   function local variable.
 - Modify IDToValue for GPU ids in createSubfunction. Now all the
   insert operations are placed in createSubfunction.
Set kernel launching parameter within IslPTXGenerator

Since we have ExprBuilder in IslPTXGenerator, we no longer need to get
the Kernel grid_size from IslNodeBuilder.
 - Make setLaunchingParameters private and remove call of it from the
   createForGPGPU function. This makes the createForGPGPU function
   clean.
GPURuntime library interface changes

 + Add polly_setBlockShape.
 + Add createCallSetBlockShape to support 3d blocks.
 - Seperate setBlockShape from setKernelParameters.
 - Fix comments that demo the usage of the library.
Call createCallSetBlockShape before start GPU timer