opencl device sorting

OpenCL devices are being created in the following order.
1. GPU
2. ACCELERATOR
3. CPU
All GPU devices on any platforms are listed first, followed by
accelerators and finally CPUs. The order of platforms is not
deterministic, but all GPU devices come before accelerators and
accelerators after GPUs & before CPUs.
Wrappers for resize
Add missing license headers to transform_interp
Added tests for iota
Merge pull request #191 from 9prady9/ocl_dev_sort

opencl device sorting
Added placeholders for join
Added CPU backend for join
Added CUDA backend for join
Added OpenCL backend for join
Added tests and linking test data for join
Merge pull request #192 from shehzan10/join

join for all backends.
Better error handling in ImageIO

* Handles errors better
* More verbose error messages
* Throws freeimage errors also
PERF Batching + Blocks images in rotate and transform

* Batching all images in single block set is slow at high blocks
* Divide batches of images into sets and launch blocks for that
Merge pull request #200 from shehzan10/imageio_fixes

Better error handling in ImageIO
Merge pull request #202 from shehzan10/devel

PERF Batching + Blocks images in rotate and transform
Fixed tests for imageio after error changes
Split sort_by_key instantiation into multiple files

* Compilation being killed due to timeout on tegra. Required splitting
Changed dir to isAscending in all sort functions
Merge pull request #205 from shehzan10/sort_fixes

Sort fixes
- sort_by_key split across two files
- dir changed to isAscending.