make sure getitem returns a CastCollection (for now) and put __add__ back in
dispatch CastCollection.__getitem__ on int/slice

if key == int, returns a Cast
if key == slice, returns a CastCollection

added code paths to __add__ in Cast and CastCollection to correctly handle
concatenation between different types