Add CtsIcu4cTestCases for ICU4C API coverage - Attempt 2

Attempt 2: The test is only for primary ABI, until the Soong limitation
is resolved.
- cintltest and intltest are the executable binaries
  running the devices.
- cintltest and intltest are basically compiled against
  libicuuc and libicui18n, except if the APIs are available
  in the NDK surface in libicu, the test will link that in favour
  of NDK. So the APIs provided in the NDK will have the API coverge,
  while the test can keep using the hidden APIs in libicuuc, and
  libicui18n.
  cts_headers/ are the same as libicuuc and libicui18n headers, except
  that unicode/urename.h is modified by the generate_ndk.py to select
  the NDK API surface.

Bug: 160350521
Test: atest CtsIcu4cTestCases
Test: Inspect the symbol table manually by "objdump -TC cintltst"
Test: build/soong/build_test.bash
Test: Test: OUT_DIR=ndk_out build/soong/scripts/build-ndk-prebuilts.sh
Change-Id: Icf51b09c36eb3b4ef30a5032bdef7af1a76567d9
diff --git a/libicu/cts_headers/brktrans.h b/libicu/cts_headers/brktrans.h
new file mode 100644
index 0000000..cb3def9
--- /dev/null
+++ b/libicu/cts_headers/brktrans.h
@@ -0,0 +1,104 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/*
+**********************************************************************
+*   Copyright (C) 2008-2015, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   05/11/2008  Andy Heninger  Ported from Java
+**********************************************************************
+*/
+#ifndef BRKTRANS_H
+#define BRKTRANS_H
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_TRANSLITERATION && !UCONFIG_NO_BREAK_ITERATION
+
+#include "unicode/translit.h"
+
+#include "unicode/localpointer.h"
+
+
+U_NAMESPACE_BEGIN
+
+class UVector32;
+
+/**
+ * A transliterator that pInserts the specified characters at word breaks.
+ * To restrict it to particular characters, use a filter.
+ * TODO: this is an internal class, and only temporary. 
+ * Remove it once we have \b notation in Transliterator.
+ */
+class BreakTransliterator : public Transliterator {
+public:
+
+    /**
+     * Constructs a transliterator.
+     * @param adoptedFilter    the filter for this transliterator.
+     */
+    BreakTransliterator(UnicodeFilter* adoptedFilter = 0);
+
+    /**
+     * Destructor.
+     */
+    virtual ~BreakTransliterator();
+
+    /**
+     * Copy constructor.
+     */
+    BreakTransliterator(const BreakTransliterator&);
+
+    /**
+     * Transliterator API.
+     * @return    A copy of the object.
+     */
+    virtual BreakTransliterator* clone() const;
+
+    virtual const UnicodeString &getInsertion() const;
+
+    virtual void setInsertion(const UnicodeString &insertion);
+
+    /**
+     * ICU "poor man's RTTI", returns a UClassID for the actual class.
+     */
+    virtual UClassID getDynamicClassID() const;
+
+    /**
+     * ICU "poor man's RTTI", returns a UClassID for this class.
+     */
+    U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
+
+ protected:
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @param text          the buffer holding transliterated and
+     *                      untransliterated text
+     * @param offset        the start and limit of the text, the position
+     *                      of the cursor, and the start and limit of transliteration.
+     * @param incremental   if true, assume more text may be coming after
+     *                      pos.contextLimit. Otherwise, assume the text is complete.
+     */
+    virtual void handleTransliterate(Replaceable& text, UTransPosition& offset,
+                                     UBool isIncremental) const;
+
+ private:
+     LocalPointer<BreakIterator> cachedBI;
+     LocalPointer<UVector32>     cachedBoundaries;
+     UnicodeString               fInsertion;
+
+     static UnicodeString replaceableAsString(Replaceable &r);
+
+    /**
+     * Assignment operator.
+     */
+    BreakTransliterator& operator=(const BreakTransliterator&);
+};
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_TRANSLITERATION */
+
+#endif