Update tests.
WIP: Add support for global variable access.

If the left value of an assignment is in the __global address space while the right value is in the __private address space, a copy will happen. In this situation, no extra memory is needed. Please note that copying array elements from one space address space to another may result in bugs related to coherency, but in most practical applications the generated OpenCL code should be OK. The coherency problem cannot be resolved in an easy way within the current framework, so I leave it as a TODO.