Issue #12892: The utf-16* and utf-32* codecs now reject (lone) surrogates.

The utf-16* and utf-32* encoders no longer allow surrogate code points
(U+D800-U+DFFF) to be encoded.
The utf-32* decoders no longer decode byte sequences that correspond to
surrogate code points.
The surrogatepass error handler now works with the utf-16* and utf-32* codecs.

Based on patches by Victor Stinner and Kang-Hao (Kenny) Lu.
Issue #19513: Disable overallocation of the PyUnicodeWriter before the last write
Add _PyUnicodeWriter_WriteASCIIString() function
Issue #19513: repr(tuple) now uses _PyUnicodeWriter for better performances
Issue #19646: repr(dict) now uses _PyUnicodeWriter API for better performances
oops, remove _PyObject_ReprWriter() definition (unwanted change)
Also chain codec exceptions that allow weakrefs

The zlib and hex codecs throw custom exception types with
weakref support if the input type is valid, but the data
fails validation. Make sure the exception chaining in the
codec infrastructure can wrap those as well.
Remove dead code committed in issue #12892.
Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip).
#1098749: re-word gettext docs to not encourage using pygettext so much.

Also, add a link to the Babel package.
Merge from 3.3
#19449: Handle non-string keys when generating 'fieldnames' error.

csv was handling non-string keys fine except for the error message
generated when a non-string key was not in 'fieldnames'.

Fix by Tomas Grahn, full patch-with-test by Vajrasky Kok (tweaked slightly).
Merge: #19449: Handle non-string keys when generating 'fieldnames' error.
#2927: Added the unescape() function to the html module.
asyncio: Add streams.start_server(), by Gustavo Carneiro.
Issue #9566: compile.c uses Py_ssize_t instead of int to store sizes to fix
compiler warnings on Windows 64-bit. Use Py_SAFE_DOWNCAST() where the final
downcast is needed.

The bytecode doesn't support integer parameters larger than 32-bit yet.
Issue #9566, #19617: Fix compilation on Windows

INT32_MIN and INT32_MAX constants are unknown on Windows.
Issue #9566, #19617: New try to fix compilation on Windows

Some compilers (ex: Visual Studio) decode -2147483648 as a unsigned integer
instead of an signed integer.
Issue #19637: fix test_undecodable_env() of test_subprocess on AIX

On AIX, the C locale encoding uses the ISO-8859-1 encoding, not ASCII.
Issue #9566, #19617: Fix more compiler warnings in compile.c on Windows 64-bit