TIL: Inspecting Python Threads

One of my favourite things about Python is that pretty much everything about the language can be inspected at runtime and today I found out this is true even for threads.

While working on this PR I kept running into issues where the esbonio process would not terminate, despite everything to my knowledge at least, was being shutdown as expected. Having encountered issues like this before, I knew the culprit was likely to be some background thread was stuck on something and keeping the process alive. The problem was I had no idea which thread it could be or what it was doing.