Fix bugs in tp_traverse handlers.
* A garbage collected type bound by nanobind is allocated with `PyType_GenericAlloc` (https://github.com/wjakob/nanobind/blob/8f245bd6e5544ff828beb46435af24b8769bfcdc/src/nb_type.cpp#L81).
* `PyType_GenericAlloc` calls `_PyObject_GC_TRACK` (https://github.com/python/cpython/blob/884df116d79b05d9342e05e50484d61c684ecb8b/Objects/typeobject.c#L2357), and as soon as an object is tracked by the GC, it may be traversed (https://docs.python.org/3/c-api/gcsupport.html#c.PyObject_GC_Track).
* However, at this point, the nanobind-bound object has been allocated, but its C++ constructor need not yet have run. The constructor runs when `__init__` is called.
* In tp_traverse methods of nanobind-bound classes, we should test whether the instance is ready before visiting any C++ state. Instance readiness will be set at the end of the dispatch of `__init__` (https://github.com/wjakob/nanobind/blob/8f245bd6e5544ff828beb46435af24b8769bfcdc/src/nb_func.cpp#L857).
In addition, all nanobind-bound classes have heap-allocated types. Make sure we visit `Py_TYPE(self)`.
PiperOrigin-RevId: 747998575