Add host iterator parameters when create kernel subfunction
[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
Create host-end IR to input parameters to kernel function

 + Add setHostIterators.
 + Add clearHostIterators.
 + Add allocateDeviceArguments.
 + Add copyArgumentsToDevice.
Make name of the kernel function parameters more readable
Implement copy kernel function arguments to device memory
[Fix] Get memory size for memcpy

GPU memcpy size should be array length multiplied with element type size.
Seperate freeDeviceMemory from cleanupGPUResource

Update GPURuntime library so that we can free multiple device arrays
and parameters.
[Fix] Generate correct loads for multiple arrays in kernel
Add flags for GPGPU code generation

 - polly-use-private-memory: use private memory for kernel code
   generation.
 - polly-use-shared-memory: use shared memory for kernel code
   generation.
 - polly-live-range-reordering: allow successive live ranges on the
   same element be reordered.
Update address space of kernel parameters to global memory
Add createLocalVariableDefinitions

This function is used to create GPU local variables, i.e. for shared
memory array or private memory definitions.
 + Add static function getLLVMTypeByName - use this function to get
   the llvm::Type of a type string. (This is a ugly and temporary
   solution.)
Add createKernelCopy function

This function is use to create LLVM IR for copy statement in a kernel
when shared memory or private memory code generation is enabled.
Add ArryIDs to store maps of array name to its isl_id.
Replace kernel_*_stmt's base with shared memory address.

In case shared memory code generation is used, set map of an array id
in IDToValue to its corresponding shared memory address so that we can
create a correct share memory load/store.
Add eraseSharedMemoryBases

This function is used to erase all the allocated shared memory from the
host module after the complete of the GPGPU code generation.