bpo-40257: Improve help for the typing module (GH-19546)

* Show docstring for special forms.
* Show docstring for special generic aliases.
* Show documentation for __origin__ for generic aliases.
diff --git a/Lib/typing.py b/Lib/typing.py
index 9cacaa8..df36500 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -323,6 +323,10 @@
         self._name = name
         self._doc = doc
 
+    @property
+    def __doc__(self):
+        return self._doc
+
     def __eq__(self, other):
         if not isinstance(other, _SpecialForm):
             return NotImplemented
@@ -672,6 +676,8 @@
         self.__slots__ = None  # This is not documented.
         if not name:
             self.__module__ = origin.__module__
+        if special:
+            self.__doc__ = f'A generic version of {origin.__module__}.{origin.__qualname__}'
 
     @_tp_cache
     def __getitem__(self, params):