function to check double precision availability

* c api exposes af_get_dbl_support function
* cpp api exposes af::isDoubleAvailable function
handle double precision in opencl tranpose

* modified tranpose opencl kernel to handle double precision
  extensions appropriately
* added double precision sanity in tranpose opencl backend wrapper
* replaced std::vector container in transpose function with std::map
  to store cl::Program and cl::Kernel objects.
* added new helper function in testing framework `noDoubleTests` to
  check for double precision availability before proceeding to double
  precision data tests.
* modified tranpose tests to appropriately check for double precision
  availability