Support for reduction amongst arbitrary axes.

- Only a basic version of the kernel is present at the moment (a contiguous kernel would only help in the all-dimensions case since it cannot be used otherwise)
- No performance review has been done yet so this might be way too slow, but it should always produce correct results
- Testing was only done on an OpenCL runtime, but with a CPU and a GPU.
Since we now have reduction (which is a big milestone), bump the version.