[ty] Implement internal routines for providing the LSP "type hierarchy" feature
Most of the interesting logic is inside of `ty_python_semantic`.
We include a light wrapper API along with tests in `ty_ide`,
which I think follows our existing convention for this sort of
thing.
Some of the tests demonstrate limitations in the current approach.
I believe all such limitations are present in pylance as well.
So this should bring us to parity at minimum.