patch 9.0.1629: having utf16idx() rounding up is inconvenient

Problem:    Having utf16idx() rounding up is inconvenient.
Solution:   Make utf16idx() round down. (Yegappan Lakshmanan, closes #12523)
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index d7e7f92..a17c19e 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1518,14 +1518,14 @@
   " UTF-16 index of a string with four byte characters
   let str = 'a😊😊b'
   call assert_equal(0, utf16idx(str, 0))
-  call assert_equal(2, utf16idx(str, 1))
-  call assert_equal(2, utf16idx(str, 2))
-  call assert_equal(2, utf16idx(str, 3))
-  call assert_equal(2, utf16idx(str, 4))
-  call assert_equal(4, utf16idx(str, 5))
-  call assert_equal(4, utf16idx(str, 6))
-  call assert_equal(4, utf16idx(str, 7))
-  call assert_equal(4, utf16idx(str, 8))
+  call assert_equal(1, utf16idx(str, 1))
+  call assert_equal(1, utf16idx(str, 2))
+  call assert_equal(1, utf16idx(str, 3))
+  call assert_equal(1, utf16idx(str, 4))
+  call assert_equal(3, utf16idx(str, 5))
+  call assert_equal(3, utf16idx(str, 6))
+  call assert_equal(3, utf16idx(str, 7))
+  call assert_equal(3, utf16idx(str, 8))
   call assert_equal(5, utf16idx(str, 9))
   call assert_equal(6, utf16idx(str, 10))
   call assert_equal(-1, utf16idx(str, 11))
@@ -1621,8 +1621,8 @@
   " UTF-16 index of a string with four byte characters
   let str = "a😊😊b"
   call assert_equal(0, utf16idx(str, 0, v:false, v:true))
-  call assert_equal(2, utf16idx(str, 1, v:false, v:true))
-  call assert_equal(4, utf16idx(str, 2, v:false, v:true))
+  call assert_equal(1, utf16idx(str, 1, v:false, v:true))
+  call assert_equal(3, utf16idx(str, 2, v:false, v:true))
   call assert_equal(5, utf16idx(str, 3, v:false, v:true))
   call assert_equal(6, utf16idx(str, 4, v:false, v:true))
   call assert_equal(-1, utf16idx(str, 5, v:false, v:true))