Backport of some of the work in r71665 to trunk. This reworks much of
int, long, and float __format__(), and it keeps their implementation
in sync with py3k.

Also added PyOS_double_to_string. This is the "fallback" version
that's also available in trunk, and should be kept in sync with that
code. I'll add an issue to document PyOS_double_to_string in the C
API.

There are many internal cleanups. Externally visible changes include:

- Implement PEP 378, Format Specifier for Thousands Separator, for
  floats, ints, and longs.

- Issue #5515: 'n' formatting for ints, longs, and floats handles
  leading zero formatting poorly.

- Issue #5772: For float.__format__, don't add a trailing ".0" if
  we're using no type code and we have an exponent.
diff --git a/Misc/NEWS b/Misc/NEWS
index d4dc2dc..74af147 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,15 @@
 Core and Builtins
 -----------------
 
+- Implement PEP 378, Format Specifier for Thousands Separator, for
+  floats, ints, and longs.
+
+- Issue #5515: 'n' formatting for ints, longs, and floats handles
+  leading zero formatting poorly.
+
+- Issue #5772: For float.__format__, don't add a trailing ".0" if
+  we're using no type code and we have an exponent.
+
 - Issue #3166: Make long -> float (and int -> float) conversions
   correctly rounded.