* Make `PyDict` iterator compatible with free-threaded build
* Added `PyDict::locked_for_each` method to iterate on free-threaded builds to prevent the dict being mutated during iteration
* Iterate over `dict.items()` when dict is subclassed from `PyDict`
