At the moment only indexing of dense 1d vectors is supported, should generalise this: - [ ] allow dense `n`d indexing - [ ] allow diagonal indexing - [ ] allow indexing of sparse or diagonal tensors e.g. ``` a_ij { (0:3,0:3): 1.0 } b_ij { a_ij[0:2, 2:3] } b_i { a_ij[0..2, 2..3] } ```