Add GpuJoin and GpuSplit to gpuarray.
Try to prevent copy-and-paste of hackish code.
Calling a non-callable is indeed a TypeError, but probably not what we want to test here.
Add optimization to remove single-element joins.
Make c_code() defer to perform if broadcast is required.
Following a change in pygpu to raise a ValueError instead of a GpuArrayException on GA_VALUE_ERROR we can remove workaround code.
Copy a missing test from the cuda ones.
Add special-case optimization to move Allocs that are inputs to Join to the Gpu.
Merge pull request #1831 from abergeron/gpuarray_joinsplit

GpuArray join/split