Make the backend available inside Queue instances.
Simplify the CUDA kernel generator.
Transition the CUDA backend over to leading sub-dimensions.

This brings the CUDA backend in line with the OpenMP backend.
Improve some variable names in the OpenMP kernel generator.
Unify how arguments are passed to generated kernels.
Factor out the constructor for {CUDA,OpenMP}MatrixBase.

This code is now part of the base MatrixBase class.
Take the CUDA alignment requirement to be 128 bytes.

While the CUDA can provide the texture alignment requirement for
a device this is often a lot larger than that required for good
global memory access.  This wastes space and compute for almost
no perceptible improvement in memory throughput.
Simplify how view row/column strides are processed.
Add an OpenCL backend based around clBLAS.

Testing thus far has been restricted to NVIDIA hardware.
Merge branch 'feature/opencl' into develop.