Added AURA_DEVICE_FUNCTION macro

This macro is used to indicate a non-kernel-function that can run in the
device.
Complex numbers cfloat_t and cdouble_t

These two files add float and double complex number types that can be
used both with OpenCL and CUDA.
Merging contributed complex kernel functions
moved complex stuff to correct place and added complex bibliography
Merging pull request and my modifications