C++ codegen broken (i.e. CudaTensors broken)
C++ codegen was broken by https://github.com/mratsim/Arraymancer/commit/829d8b16935f66bc773d93c91e5579b6a35fd502 and https://github.com/mratsim/Arraymancer/pull/90.

This is blocking for Cuda as Cuda kernel relies on C++ templates.

(fails with or without release)
`nim cpp -d:release --out:bin/all_tests --nimcache:./nimcache tests/all_tests.nim`
```
Error: execution of an external compiler program 'clang++ -c  -w  -O3 -ffast-math   -I'/Users/tesuji/.choosenim/toolchains/nim-#devel/lib' -o ./nimcache/arraymancer_arraymancer.o ./nimcache/arraymancer_arraymancer.cpp' failed with exit code: 1

./nimcache/arraymancer_arraymancer.cpp:2608:19: error: declaration of reference variable 'x' requires an initializer
                NimStringDesc*& x;
                                ^
./nimcache/arraymancer_arraymancer.cpp:2610:7: error: C-style cast from rvalue to reference type 'NimStringDesc *&'
                x = (NimStringDesc*&)0;
                    ^~~~~~~~~~~~~~~~~~
./nimcache/arraymancer_arraymancer.cpp:3192:21: error: declaration of reference variable 'x' requires an initializer
                                NimStringDesc*& x;
                                                ^
./nimcache/arraymancer_arraymancer.cpp:3194:9: error: C-style cast from rvalue to reference type 'NimStringDesc *&'
                                x = (NimStringDesc*&)0;
                                    ^~~~~~~~~~~~~~~~~~
./nimcache/arraymancer_arraymancer.cpp:3636:21: error: declaration of reference variable 'x' requires an initializer
                                NimStringDesc*& x;
                                                ^
./nimcache/arraymancer_arraymancer.cpp:3638:9: error: C-style cast from rvalue to reference type 'NimStringDesc *&'
                                x = (NimStringDesc*&)0;
                                    ^~~~~~~~~~~~~~~~~~
./nimcache/arraymancer_arraymancer.cpp:4446:9: error: declaration of reference variable 'x' requires an initializer
                                NI& x;
                                    ^
./nimcache/arraymancer_arraymancer.cpp:4448:9: error: C-style cast from rvalue to reference type 'NI &' (aka 'long long &')
                                x = (NI&)0;
                                    ^~~~~~
./nimcache/arraymancer_arraymancer.cpp:4901:21: error: declaration of reference variable 'x' requires an initializer
                                NimStringDesc*& x;
                                                ^
./nimcache/arraymancer_arraymancer.cpp:4903:9: error: C-style cast from rvalue to reference type 'NimStringDesc *&'
                                x = (NimStringDesc*&)0;
                                    ^~~~~~~~~~~~~~~~~~
./nimcache/arraymancer_arraymancer.cpp:5827:7: error: declaration of reference variable 'old_val' requires an initializer
                NI& old_val;
                    ^~~~~~~
./nimcache/arraymancer_arraymancer.cpp:5828:13: error: C-style cast from rvalue to reference type 'NI &' (aka 'long long &')
                old_val = (NI&)0;
                          ^~~~~~
./nimcache/arraymancer_arraymancer.cpp:6013:7: error: declaration of reference variable 'x_2' requires an initializer
                NI& x_2;
                    ^~~
./nimcache/arraymancer_arraymancer.cpp:6015:9: error: C-style cast from rvalue to reference type 'NI &' (aka 'long long &')
                x_2 = (NI&)0;
                      ^~~~~~
./nimcache/arraymancer_arraymancer.cpp:6159:7: error: declaration of reference variable 'x' requires an initializer
                NI& x;
                    ^
./nimcache/arraymancer_arraymancer.cpp:6161:7: error: C-style cast from rvalue to reference type 'NI &' (aka 'long long &')
                x = (NI&)0;
                    ^~~~~~
./nimcache/arraymancer_arraymancer.cpp:7326:10: error: declaration of reference variable 'v' requires an initializer
                                        NF& v;
                                            ^
./nimcache/arraymancer_arraymancer.cpp:7328:10: error: C-style cast from rvalue to reference type 'NF &' (aka 'double &')
                                        v = (NF&)0;
                                            ^~~~~~
./nimcache/arraymancer_arraymancer.cpp:7766:10: error: declaration of reference variable 'v_2' requires an initializer
                                        NF& v_2;
                                            ^~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
```

Zoom in on non-string - line 5827
```C++
N_NIMCALL(void, slicerMut_5HNBiHajzTdmOUheqCgr2A)(tyObject_Tensor_8gG034a4DEBvD9ctN8nyxaw& t, tyObject_SteppedSlice_rJTlbLcKC9bpAJbFSrlwOrQ* slices, NI slicesLen_0, NI val$
        tyObject_Tensor_8gG034a4DEBvD9ctN8nyxaw sliced;
        tyObject_Tensor_8gG034a4DEBvD9ctN8nyxaw T1_;
        memset((void*)(&sliced), 0, sizeof(sliced));
        memset((void*)(&T1_), 0, sizeof(T1_));
        unsafeSlicer_SRZrYFq46KhcUYobS9bdI9cg_2((&t), slices, slicesLen_0, (&T1_));
        sliced.shape = T1_.shape;
        sliced.strides = T1_.strides;
        sliced.offset = T1_.offset;
        sliced.data = T1_.data;
        {
                NI& old_val;        // <------- here, needs initializer
                old_val = (NI&)0;  // <------- here, needs initializer
                NI* data = dataArray_v3eUw6FwA4Vs9cV5O3TkzvQtest_init((&sliced));
                {
                        if (!is_C_contiguous_dDfDc3pbZUoFoNv6AVz18Atest_init((&sliced))) goto LA5_;
{                       {
                                NI i;
                                NI colontmp_;
                                NI T8_;
                                ...
```