bpo-33839: refactor IDLE's tooltips & calltips, add docstrings and tests (GH-7683)


* make CallTip and ToolTip sub-classes of a common abstract base class
* remove ListboxToolTip (unused and ugly)
* greatly increase test coverage
* tested on Windows, Linux and macOS
(cherry picked from commit 87e59ac11ee074b0dc1bc864c74fac0660b27f6e)

Co-authored-by: Tal Einat <taleinat+github@gmail.com>
diff --git a/Lib/idlelib/calltip.py b/Lib/idlelib/calltip.py
index 596d2bc..758569a 100644
--- a/Lib/idlelib/calltip.py
+++ b/Lib/idlelib/calltip.py
@@ -51,7 +51,7 @@
         self.open_calltip(False)
 
     def refresh_calltip_event(self, event):
-        if self.active_calltip and self.active_calltip.is_active():
+        if self.active_calltip and self.active_calltip.tipwindow:
             self.open_calltip(False)
 
     def open_calltip(self, evalfuncs):