OpenCL constant memory support

Although the branch is "gpu_constant_memory", it currently only supports OpenCL. The pull request grew larger than I expected, and supporting constant memory in CUDA will be substantially different.

This partially addresses issue #328.
I just noticed that this is probably wrong, it also needs to visit the index of the Store.