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.
Remove redundant erase calls

We used IDToValue.clear() already, no need to call erase before it.
[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.
Remove the unused ValueToValueMapTy VMap parameter.
Add restoreHostIDToValue

 - Use restoreHostIDToValue to restore the host IDToValue and free all
   the isl_ids we used for kernel ast node code generation.
GPURuntime library interface changes

 + Add polly_setBlockShape.
 + Add createCallSetBlockShape to support 3d blocks.
 - Seperate setBlockShape from setKernelParameters.
Call createCallSetBlockShape before start GPU timer
Update format
Do not check ppcg_scop independence
Remove redundant comment
Fix typo
Create host-end IR to input parameters to kernel function

 + Add setHostIterators.
 + Add clearHostIterators.
 + Add allocateDeviceArguments.
 + Add copyArgumentsToDevice.
Make setHostIterators and clearHostIterators private

Call them from within startGeneration and finishGeneration repectively.
Make name of the kernel function parameters more readable
Implement copy kernel function arguments to device memory
Fix bug: get the correct memory size for memcpy

GPU memcpy size should be array length multiplied with element type size.
Fix comments that demo the usage of the GPURuntime library
Seperate freeDeviceMemory from cleanupGPUResource

Update GPURuntime library so that we can free multiple device arrays
and parameters.
Fix bug: generate incorrect loads for multiple arrays in kernel