<wctype.h>: de-pessimize the isw*() functions.

Add the missing ASCII fast paths, ensure that they and the "no icu" fallback both use inline code rather than another function call to the non-wide variant of the function, and in passing fix a bug in wcwidth() where we were passing a null pointer as a fallback function by just inlining the u_hasBinaryProperty() lookup in the two files that use it (rather than leave the footgun lying around after it's already gone off once).

Change-Id: Id020f2d4003392e8716ca82ae40d54c982db382a
diff --git a/libc/bionic/wcwidth.cpp b/libc/bionic/wcwidth.cpp
index 4582ef7..776321f 100644
--- a/libc/bionic/wcwidth.cpp
+++ b/libc/bionic/wcwidth.cpp
@@ -73,7 +73,9 @@
 
   // Hangeul choseong filler U+115F is default ignorable, so we check default
   // ignorability only after we've already handled Hangeul jamo above.
-  if (__icu_hasBinaryProperty(wc, UCHAR_DEFAULT_IGNORABLE_CODE_POINT, nullptr)) return 0;
+  static auto u_hasBinaryProperty =
+      reinterpret_cast<u_hasBinaryProperty_t>(__find_icu_symbol("u_hasBinaryProperty"));
+  if (u_hasBinaryProperty && u_hasBinaryProperty(wc, UCHAR_DEFAULT_IGNORABLE_CODE_POINT)) return 0;
 
   // A few weird special cases where EastAsianWidth is not helpful for us.
   if (wc >= 0x3248 && wc <= 0x4dff) {