Adding large changes to OpenCL version. Needs testing against Boost-Speckle.

To Do:
- Use exit data from a simulation and compare results between Boost-Speckle
  and OpenCL-Speckle to verify they produce the same results.