Support extended slicing in foreign lists.

List indexing with a single integer (`data[1]`) and with an extended slice (`data[::-1]`) are both routed through `list#__getitem__`, so subclasses of `list` that override `__getitem__` must check the type of their input and return a single item or a list, as appropriate.