Setting single element of tensor
It would be nice to support setting single elements of a tensor (maybe mainly useful for writing tests):

```nimrod
import arraymancer
let X = zeros[float](5, 5)
X[2, 2] = 1.0
```

This currently doesn't compile: 

```
arr.nim(3, 2) Error: type mismatch: got <Tensor[system.float], int literal(2), int literal(2), float64>
but expected one of: 
proc `[]=`[Idx, T, U, V](a: var array[Idx, T]; x: HSlice[U, V]; b: openArray[T])
proc `[]=`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex; x: T)
proc `[]=`[T, U](s: var string; x: HSlice[T, U]; b: string)
proc `[]=`[T, U, V](s: var seq[T]; x: HSlice[U, V]; b: openArray[T])
proc `[]=`[I: Ordinal; T, S](a: T; i: I; x: S)
proc `[]=`[T](s: var openArray[T]; i: BackwardsIndex; x: T)
proc `[]=`(s: var string; i: BackwardsIndex; x: char)
macro `[]=`[T](t: var Tensor[T]; args: varargs[untyped]): untyped
proc `[]=`[T](a: var DynamicStackArray[T]; idx: Index; v: T)

expression: []=(X, 2, 2, 1.0)
```

Also useful: scalar upcasting in assignment a la `X[0, _] = 1.0`.