Use cudaHostAlloc, cudaFreeHost in MemoryManager

- Add host_malloc(...) and host_free(...) functions to DeviceWrapper
  namespace. Add CUDA implmentation in file: src/device_wrapper_gpu.cu

- Use page-locked host memory, using cudaHostAlloc and cudaFreeHost in
  MemoryManager when using CUDA. This is needed for asynchronous memory
  transfer between host and device.

- In SetupFMM(...), setup_data is reused in repeated calls.