Start de-duplicating the regular and wide printf implementations.

This patch switches to C++ (in anticipation of needing it later), removes
a little duplication (via a macro for now), and ensures uniform support
for %C/%lc and %S/%ls between regular and wide (with new tests).

Since it's so hard to debug problems in printf (as the time I've wasted
already today will testify), that's all I want to do in this change. The
other 500 lines of diff can wait...

(Also merge "floatio.h" into "local.h" now all the users are in forked
code.)

Bug: http://b/67371539
Test: ran tests
Change-Id: I083353d89c32b9302d759ca6967cc6d8a62cd8a5
diff --git a/libc/Android.bp b/libc/Android.bp
index 050d2f5..27e90be 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -524,8 +524,8 @@
     name: "libc_openbsd_large_stack",
     defaults: ["libc_defaults"],
     srcs: [
-        "stdio/vfprintf.c",
-        "stdio/vfwprintf.c",
+        "stdio/vfprintf.cpp",
+        "stdio/vfwprintf.cpp",
     ],
     cflags: [
         "-include openbsd-compat.h",