Modify BlockGenerator to generate access from isl_id_to_ast_expr

Add member variable:
 - IslExprBuilder *Exprbuilder
 - isl_id_to_ast_expr *Indexes
Add function getDeviceArrayBaseAddressMap

This function is used to get the mapping from original Value of array
base address to the array parameters of the ptx subfunction.
Add a Verifier pass to verify the subfunction.

To make sure that the generated bitcodes in ptx subfunction is valid.
Implement copy data to and from device
Fix typo
GPGPU backend update

 + Duplicate drvapi_error_string.h from cuda sdk to give much more
   readable error messages.
 + Add allocateMemoryForDevice function.
Fix some comment errors

Fix errors in the commented test case which is used to demonstrate the
usage of libGPURuntime.so.
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.
Store isl_id of gpu grid ids and block ids in kernel ast_node
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.
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.
Remove unused member variable

GridWidth, GridHeight, BlockWidth, BlockHeight
Remove unused static function getArraySizeInBytes
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 varibale.
Remove the unused ValueToValueMapTy VMap parameter.
Add createCopyOfIDToValue

Use this function to create a copy of IDToValue.