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.
They are indeed forked from test/correctness/convolution.cpp. I'm going to greatly cut down these tests as they have significant overlap with convolution.cpp, I only wanted them to test the relevant constant memory behavior (and leave convolution testing to convolution.cpp).