patch 9.1.1525: tests: testdir/ is a bit messy

Problem:  tests: testdir is a bit messy
Solution: move test scripts into testdir/util/ directory

src/testdir/ has become a dumping ground mixing test cases with utility
functions. Let's fix this by moving all utility functions into the
testdir/util/ directory

Also a few related changes had to be done:
- Update Filelist
- update README.txt and mention the new directory layout
- fix shadowbuild by linking the util directory into the shadow dir

closes: #17677

Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/util/popupbounce.vim b/src/testdir/util/popupbounce.vim
new file mode 100644
index 0000000..5e63aca
--- /dev/null
+++ b/src/testdir/util/popupbounce.vim
@@ -0,0 +1,80 @@
+" Use this script to measure the redrawing performance when a popup is being
+" displayed.  Usage with gcc:
+"    cd src
+"    # Edit Makefile to uncomment PROFILE_CFLAGS and PROFILE_LIBS
+"    make reconfig
+"    ./vim --clean -S testdir/util/popupbounce.vim main.c
+"    gprof vim gmon.out | vim -
+
+" using line continuation
+set nocp
+
+" don't switch screens when quitting, so we can read the frames/sec
+set t_te=
+
+let winid = popup_create(['line1', 'line2', 'line3', 'line4'], {
+	      \   'line' : 1,
+	      \   'col' : 1,
+	      \   'zindex' : 101,
+	      \ })
+redraw
+
+let start = reltime()
+let framecount = 0
+
+let line = 1.0
+let col = 1
+let downwards = 1
+let col_inc = 1
+let initial_speed = 0.2
+let speed = initial_speed
+let accel = 1.1
+let time = 0.1
+
+let countdown = 0
+
+while 1
+  if downwards
+    let speed += time * accel
+    let line += speed
+  else
+    let speed -= time * accel
+    let line -= speed
+  endif
+
+  if line + 3 >= &lines
+    let downwards = 0
+    let speed = speed * 0.8
+    let line = &lines - 3
+  endif
+  if !downwards && speed < 1.0
+    let downwards = 1
+    let speed = initial_speed
+    if line + 4 > &lines && countdown == 0
+      let countdown = 50
+    endif
+  endif
+
+  let col += col_inc
+  if col + 4 >= &columns
+    let col_inc = -1
+  elseif col <= 1
+    let col_inc = 1
+  endif
+
+  call popup_move(winid, {'line': float2nr(line), 'col': col})
+  redraw
+  let framecount += 1
+  if countdown > 0
+    let countdown -= 1
+    if countdown == 0
+      break
+    endif
+  endif
+
+endwhile
+
+let elapsed = reltimefloat(reltime(start))
+echomsg framecount .. ' frames in ' .. string(elapsed) .. ' seconds, ' .. string(framecount / elapsed) .. ' frames/sec'
+
+qa