fix corner cases with slicing

@embray 
This is a suggested PR to fix a few minor problems I found with slicing. The examples below did not work as expected:

```
model = Shift(1, name='shift_x') & Shift(2, name='shift_y') | Rotattion2D(12)
model[1:]
model[1:6]
model['shift_x' : 'final']
```