* Content of PR #4374 applied on top of smart_holder branch.
* More tests, with USE_SH switch. [ci skip]
* Use `std::dynamic_pointer_cast<Base0>` [ci skip]
* All tests pass when using `m.make_derived_as_base0_raw_ptr()`, with `USE_SH` defined or not defined. [ci skip]
* WIP
* Debug LOOOK & one-line bug fix:
```diff
- auto smhldr = pybindit::memory::smart_holder::from_shared_ptr(src);
+ auto smhldr = pybindit::memory::smart_holder::from_shared_ptr(std::shared_ptr<void>(src, const_cast<void *>(st.first)));
```
* Remove all print LOOOK and clang-format the fix.
* Resolve clang-tidy errors.
* Systematic test matrix.
* Bug fix in `smart_holder_type_caster<std::unique_ptr<T, D>>::cast()`
* Rename: test_mi_debug -> test_class_sh_mi_thunks
* Add `test_ptrdiff_derived_base0()`
* Miscellaneous polishing (naming, comments). No functional changes.
* Improve test_class_sh_mi_thunks.py implementation. No change in test coverage.
* Resolve clang-tidy error.