PyTuple: Add back iter() method (fixes build); require py: Python for as_slice().
PyTuple: Add back iter() method (fixes build); require py: Python for as_slice().

This is a compromise solution: we require the GIL to be held when acquiring
the slice, but not later when using the slice.

We could bind the lifetime of the returned slice to the Python-token lifetime
to prevent accessing the slice when the GIL is not held, but that causes
problems with the FromPyObject impl.

Alternatively we could not require the GIL at all when accessing the PyTuple
(and thus keep the ops::Index and IntoIterator implementations), but that
relies on too many CPython implementation details for my taste.

naufraghi/rust-cpython,naufraghi/rust-cpython,naufraghi/rust-cpython,dgrunwald/rust-cpython,dgrunwald/rust-cpython