Update ICU to 59.1

* Highlights:
  - Emoji 5.0 data (partial; Emoji_Component property not included)
  - CLDR 31.0.1 (http://blog.unicode.org/2017/03/cldr-version-31-released.html)
    UTC and GMT are treated as distinct)
  - New case mapping API for styled text
  - C++ 11 is required
  - char16_t for UChar (UTF-16)
  - Source code is in UTF-8

* Size changes

  common: 10,130,560 => 10,175,056
  android: 6,573,872 => 6,616,864
  iOS: 6,562,352 => 6,605,152

On top of ICU 59.1 from the upstream, the following changes were applied.
See https://chromium.googlesource.com/chromium/deps/icu/+log/chromium/59staging

  - Fix C++ 11 string literal assignment issue (upstream bug: 13192)
  - Fix C4229 warning by MSVC
  - Apply utf32.patch and include unistr.h in fuzzer_util
  - Update ICU data files
  - Fix wpo.patch
  - Apply Google locale patch and locale1.patch
  - update readme
  - Apply breakiterator related patches
  - Apply and update wpo.patch
  - Drop unused patch, apply data.build.win.patch, update README.chromium
  - Add /utf-8 flag for Windows/Visual Studio
  - Update BUILD.gn for UChar, stubdata and apply data_sym.patch
  - use stubdata.cpp instead of stubdata.c in icu.gyp
  - Update icu.gyp* files for v8
  - Update BUILD.gn, apply data.build.patch and vscomp.patch
  - Add new files in ICU 59.1
  - Get a fresh copy of ICU 59.1 from the upstream
  - Update update.sh script

TBR=drott@chromium.org, yangguo@chromium.org
Bug:699469
TEST: layout tests, all unittests, browser tests
Change-Id: Ie1e77323aa0c7f872153680c4deca6471a771a5c
Reviewed-on: https://chromium-review.googlesource.com/505173
Reviewed-by: Jungshik Shin <jshin@chromium.org>
diff --git a/source/common/udata.cpp b/source/common/udata.cpp
index 9460746..10e9998 100644
--- a/source/common/udata.cpp
+++ b/source/common/udata.cpp
@@ -1,4 +1,4 @@
-// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
 // License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
@@ -8,7 +8,7 @@
 *
 ******************************************************************************
 *   file name:  udata.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -110,8 +110,12 @@
 static UHashtable  *gCommonDataCache = NULL;  /* Global hash table of opened ICU data files.  */
 static icu::UInitOnce gCommonDataCacheInitOnce = U_INITONCE_INITIALIZER;
 
+#if U_PLATFORM_HAS_WINUWP_API == 0 
 static UDataFileAccess  gDataFileAccess = UDATA_DEFAULT_ACCESS;  // Access not synchronized.
                                                                  // Modifying is documented as thread-unsafe.
+#else
+static UDataFileAccess  gDataFileAccess = UDATA_NO_FILES;        // Windows UWP looks in one spot explicitly
+#endif
 
 static UBool U_CALLCONV
 udata_cleanup(void)
@@ -619,12 +623,14 @@
 
 /*----------------------------------------------------------------------*
  *                                                                      *
- *  Add a static reference to the common data  library                  *
+ *  Add a static reference to the common data library                   *
  *   Unless overridden by an explicit udata_setCommonData, this will be *
  *      our common data.                                                *
  *                                                                      *
  *----------------------------------------------------------------------*/
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
 extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
+#endif
 
 /*
  * This would be a good place for weak-linkage declarations of
@@ -672,6 +678,7 @@
             if(gCommonICUDataArray[commonDataIndex] != NULL) {
                 return gCommonICUDataArray[commonDataIndex];
             }
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
             int32_t i;
             for(i = 0; i < commonDataIndex; ++i) {
                 if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
@@ -679,6 +686,7 @@
                     return NULL;
                 }
             }
+#endif
         }
 
         /* Add the linked-in data to the list. */
@@ -694,11 +702,13 @@
             setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
         }
         */
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
         setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, FALSE, pErrorCode);
         {
             Mutex lock;
             return gCommonICUDataArray[commonDataIndex];
         }
+#endif
     }
 
 
@@ -1245,9 +1255,14 @@
     fprintf(stderr, " tocEntryPath = %s\n", tocEntryName.data());
 #endif
 
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
     if(path == NULL) {
         path = COMMON_DATA_NAME; /* "icudt26e" */
     }
+#else
+    // Windows UWP expects only a single data file.
+    path = COMMON_DATA_NAME; /* "icudt26e" */
+#endif
 
     /************************ Begin loop looking for ind. files ***************/
 #ifdef UDATA_DEBUG