CI: Upload failed screendump tests when run in github actions

It's a bit of a pain to debug failing screendump tests without knowing
exactly what went wrong. Therefore include actions/upload-artifact for
the Github CI runners and have them uploaded those failing screen dump
tests automatically.

Let's add this step to each of the Linux/MacOS/Windows workflows but do
not duplicate the code, factor it out to a single file
.github/actions/screendump/action.yml and reference this one from the
main ci.yml file

Example:
https://github.com/chrisbra/vim/actions/runs/9085493619

closes: #14771

Co-authored-by: dundargoc <gocdundar@gmail.com>
Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 74a6674..1110665 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -270,6 +270,9 @@
           do_test() { sg audio "sg $(id -gn) '$*'"; }
           do_test make ${SHADOWOPT} ${TEST}
 
+      - if: ${{ !cancelled() }}
+        uses: ./.github/actions/screendump
+
       - name: Vim tags
         if: contains(matrix.extra, 'vimtags')
         run: |
@@ -396,6 +399,9 @@
         run: |
           make ${TEST}
 
+      - if: ${{ !cancelled() }}
+        uses: ./.github/actions/screendump
+
   windows:
     runs-on: windows-2022
 
@@ -691,6 +697,9 @@
             nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\vim  || exit 1
           )
 
+      - if: ${{ !cancelled() }}
+        uses: ./.github/actions/screendump
+
       - name: Generate gcov files
         if: matrix.coverage
         shell: msys2 {0}