Switch to the OpenBSD wcsto* functions.

This replaces a partial set of non-functional functions with a complete
set of functions, all of which actually work.

This requires us to implement mbsnrtowcs and wcsnrtombs which completes
the set of what we need for libc++.

The mbsnrtowcs is basically a copy & paste of wcsnrtombs, but I'm going
to go straight to looking at using the OpenBSD UTF-8 implementation rather
than keep polishing our home-grown turd.

(This patch also opportunistically switches us over to upstream btowc,
mbrlen, and wctob, since they're all trivially expressed in terms of
other functions.)

Change-Id: I0f81443840de0f1aa73b96f0b51988976793a323
Merge "Switch to the OpenBSD wcsto* functions."
Fix build (signed char issue).

Change-Id: I05d78f4c1599ed9a0c1285f9eb1e89bc2f55c24d
Merge "Fix build (signed char issue)."
Switch to the OpenBSD implementations of the wide scanf functions.

This also gets us the C99 wcstoimax and wcstoumax, and a working fgetwc and
ungetwc, all of which are needed in the implementation.

This also brings several other files closer to upstream.

Change-Id: I23b025a8237a6dbb9aa50d2a96765ea729a85579
Merge "Switch to the OpenBSD implementations of the wide scanf functions."
Switch to OpenBSD stdio wide get/put functions.

Change-Id: I71f8769cdea874e55d397ca7682d9d4e659d3dcb
Merge "Switch to OpenBSD stdio wide get/put functions."
Switch to OpenBSD stdio wide printf functions.

Change-Id: Icf4f8685d021ec6b7482ca1cc021ce8184098e4a
Merge "Switch to OpenBSD stdio wide printf functions."
auto-merger: merge in from aosp/master