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
Do not check ppcg_scop independence
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