[NN Prim] NCHW - softmax_cross_entropy completely different performance profile
With the change from CHWN to NCHW format softmax_cross_entropy has a completely different performance profile.

All proc should be rebenched. Issue is that there seems to be a random segfault for backward proc (attempt to read from nil) since moving to reference semantics, tracked in #178.

Note: It it not the ref semantics that improved perf (verified, and procs were `unsafe` where appropriate)

Not on release
```
Softmax xentropy zipAxis, mean(sum <- map2): 29.31119203567505
Softmax xentropy Frobenius fold: 26.66052913665771
Sparse softmax naive loop: 12.49873685836792
Sparse softmax simplified loop + fold: 12.726154088974
###### Backpropagation
Softmax xentropy backward: 33.16365599632263
Sparse softmax xentropy backward: 31.08490586280823
Backprop SCE optimized: 53.54699993133545
Backprop Sparse SCE optimized: 53.49072003364563
```
Release (unfortunately segfault on backprop)
```
Softmax xentropy zipAxis, mean(sum <- map2): 4.9235680103302
Softmax xentropy Frobenius fold: 6.266638040542603
Sparse softmax naive loop: 3.714625120162964
Sparse softmax simplified loop + fold: 3.185622930526733
```