This patch is a partition of the original patch posted in http://reviews.llvm.org/D14031.
This patch implements the library device plugins that are used to interface with a given device. Currently a generic 64-bit target and a CUDA enables GPU are the only available plugins. The interface of each plugin is documented in http://goo.gl/L1rnKJ.
Depends on http://reviews.llvm.org/D14031.