Some slicing syntaxes fails inside generics
```Nim
import arraymancer

proc test[T](t: Tensor[T]) =
  discard t[^1..0|-1] # fails
  discard t[0..1] # fails
  discard t[0..^1] # fails
  discard t[0..1|1] # works
  discard t[_] # works
  discard t[0] # works

zeros([2], int).test()
```