Issue #25523: Correct "a" article to "an" article

This changes the main documentation, doc strings, source code comments, and a
couple error messages in the test suite. In some cases the word was removed
to fix the grammar.
diff --git a/Misc/HISTORY b/Misc/HISTORY
index fa0c623..ae5c643 100644
--- a/Misc/HISTORY
+++ b/Misc/HISTORY
@@ -388,7 +388,7 @@
 -----------------
 
 - Bug #1441486: The literal representation of -(sys.maxint - 1)
-  again evaluates to a int object, not a long.
+  again evaluates to an int object, not a long.
 
 - Bug #1501934: The scope of global variables that are locally assigned
   using augmented assignment is now correctly determined.
@@ -4295,7 +4295,7 @@
   interpreter executions, would fail.
 
 - "%c" % u"a" now returns a unicode string instead of raising a
-  TypeError. u"%c" % 0xffffffff now raises a OverflowError instead
+  TypeError. u"%c" % 0xffffffff now raises an OverflowError instead
   of a ValueError to be consistent with "%c" % 256. See SF patch #710127.
 
 Extension modules
@@ -12193,7 +12193,7 @@
 
 - The interfaces for the bind*() and unbind() widget methods have been
 redesigned; the bind*() methods now return the name of the Tcl command 
-created for the callback, and this can be passed as a optional
+created for the callback, and this can be passed as an optional
 argument to unbind() in order to delete the command (normally, such
 commands are automatically unbound when the widget is destroyed, but
 for some applications this isn't enough).