libc++: Use Android support library.

This improves libc++ in several ways:

- It adds a new static helper library under
  sources/android/support/ to provide missing functionality
  from Bionic, which are required to support wide chars
  and UTF-8 encoded multi byte strings properly, as well
  as locales and other stuff.

  See README file in this directory for more details.

- It makes the ndk-build of libc++ use the support library.

- It provides a work-around for the Bionic limitation in its
  <ctype.h> table named _ctype_, which doesn't include a bit
  flag for blank characters (there is a _B flag which is only
  used on SPACE (32), to implement isprint()).

  See .../libcxx/support/android/locale_android.cpp

  This removes the need to completely wrap <ctype.h>
  in the support library itself.

+ Add two new unit tests to the NDK:

    - test-android-support
    - test-libc++

  The first one builds and runs a small unit test suite
  for the support library to verify it works properly.
  This is completely independent from libc++.

  The second one builds a minimalistic "Hello World"
  program. Note that this uses a hack to avoid a runtime
  crash (see sources/cxx-stl/llvm-libc++/test/test_1.cc)

TODO:
  - Move the support library into its own independent
    patch, when we're confident it works well enough.

Change-Id: I662f48a5ae602975a80b732f8738025f7e50a275
168 files changed