BUGFIX: reduction that upcast the input on no axis (ex: sum on scalar).

It produce bad results as we don't upcast the inputs in the code, we just copy it.
Add many tests related to the reduction on 0 axis and upcast bug.
make some reduction test work with complex.
Merge pull request #1416 from nouiz/reduce_dtype_noaxis

[BUGFIX] Reduce dtype noaxis
Fixed #defines to work with npy_3kcompat and bytes.
npy_3kcompat redefines old PyString_X to use bytes, but this breaks
compatibility with python code expecting new strings. The solution is to
use PyUnicode wherever possible instead of PyBytes.
Fixed CURAND wrapper to work with capsules.
The capsule API destructor gets passed a pointer to the capsule, not the
underlying C object as in the old PyCObject API.