Support complex numbers
Only down side in the moment is that
complex<float> must never be mixed in a kernel (real scalars of the other type are mostly ok due to manually implemented templates).
Should work on CPU and GPU.
Another thing that this PR changes is that also the
headers attribute of SymPy Expression is checked to determine necessary headers.