bpo-40066: Enum: modify `repr()` and `str()` (GH-22392)

* Enum: streamline repr() and str(); improve docs

- repr() is now ``enum_class.member_name``
- stdlib global enums are ``module_name.member_name``
- str() is now ``member_name``
- add HOW-TO section for ``Enum``
- change main documentation to be an API reference
diff --git a/Lib/re.py b/Lib/re.py
index a39ff04..5e40c7b 100644
--- a/Lib/re.py
+++ b/Lib/re.py
@@ -142,6 +142,7 @@
 
 __version__ = "2.2.1"
 
+@enum.global_enum
 class RegexFlag(enum.IntFlag, boundary=enum.KEEP):
     ASCII = A = sre_compile.SRE_FLAG_ASCII # assume ascii "locale"
     IGNORECASE = I = sre_compile.SRE_FLAG_IGNORECASE # ignore case
@@ -154,22 +155,6 @@ class RegexFlag(enum.IntFlag, boundary=enum.KEEP):
     TEMPLATE = T = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
     DEBUG = sre_compile.SRE_FLAG_DEBUG # dump pattern after compilation
 
-    def __repr__(self):
-        res = ''
-        if self._name_:
-            member_names = self._name_.split('|')
-            constant = None
-            if member_names[-1].startswith('0x'):
-                constant = member_names.pop()
-            res = 're.' + '|re.'.join(member_names)
-            if constant:
-                res += '|%s' % constant
-        return res
-
-    __str__ = object.__str__
-
-globals().update(RegexFlag.__members__)
-
 # sre exception
 error = sre_compile.error