Add a shared library libandroidicu

Add a shared library, libandroidicu, that is a shim of ICU4C for Android.

The library redirects all functions call to libicuuc and libicui18n.
But the library
- Contains only @stable C API in ICU4C
- use the suffix of _android for all C functions.

The entire implementation of the shim is generated into
libandroidicu/static_shim/shim.cpp by
tools/icu4c_srcgen/generate_libandroidicu.py.

2 sets of header files in libandroidicu:
1. Headers in libandroidicu/include/unicode/
  They are identical to the corresponding files in
  icu4c/source/common/unicode and icu4c/source/i18n/unicode,
  but C++ headers are not included. The headers may be modified
  in the future.
2. libandroidicu/include/uconfig_local.h
   It's added to enable renaming and to hide some APIs, e.g.
   @deprecated API.

Currently, the headers may include more APIs than the shim
can support since it has different logic to include/hide the APIs.
The linker tool ld may catch errors at build time
if the code uses an API that doesn't exist in the shim.

Also, this commit chain defines a C flag ANDROID_LINK_SHARED_ICU4C
to stop others to link libicuuc or libicui18n accidentally.
If an android target links to libicuuc without the flag,
it will cause an build error. This flag is disabled,
until all the build targets use the flag or links to
libandroidicu instead.

Bug: 117094880
Test: tools/icu4c_srcgen/generate_libandroidicu.py
Test: m droid and device booted
Change-Id: I568d84f9b4d551c03c75ea24bbf3c981f43ba751
81 files changed